активируйте ccTouchesBegan с помощью кнопки в cocos2d и сделайте так, чтобы она работала только один раз - PullRequest
0 голосов
/ 10 января 2012

Я хочу, чтобы что-то произошло с ccTouchesBegan, но я хочу ограничить это действие кнопкой, то есть действие с помощью кнопки должно вызвать ccTouchesBegan, но только один раз. После завершения кода внутри ccTouchesBegan интерфейс должен вернуться в нормальное состояние и подождать, пока кнопка не будет нажата для повторного запуска действия.

Я сделал триггер кнопки ccTouchesBegan при ее нажатии, но проблема в том, что после нажатия кнопки код внутри ccTouchesBegan продолжает работать и делать то же самое с тех пор, когда выполняется действие касания на симуляторе. *

Это код, который у меня есть.

это метод флага, который я создал, чтобы я знал, что кнопка нажата, и я могу контролировать действия в ccTouchesBegan.

- (void) selector{
    click = true;
  }

это кнопка, которая вызывает селектор метода.

- (void) button{
CCMenuItemImage *touchesMovedButton = [CCMenuItemImage itemFromNormalImage:@"ActionButton-Normal.png" 
                                                         selectedImage:@"ActionButton-Selected.png"
                                                                target:self 
                                                              selector:@selector(selector)
                                                              ];      

        CCMenu *selectorButton = [CCMenu menuWithItems: touchesMovedButton, nil];

        selectorButton.position = ccp(64, 64);

        [self addChild: selectorButton];
}

и это метод ccTouchesBegan

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{ 

UITouch *touch = [touches anyObject];

//this part doesn't let the interface start the ccTouchesBegan code until the button has been pressed.
if (click == false) {
            return;       
        }
        // the else code starts when the button has been pressed.
        else{
            CCLOG(@"you have touched the interface!!");
        }
}

Это код, интерфейс не выполняет никаких действий, пока кнопка не нажата, но после нажатия она продолжает печатать CCLOG каждый раз, когда я прикасаюсь к интерфейсу. я просто хочу, чтобы он делал это один раз, а затем, когда я снова нажимаю кнопку, он должен сделать это только один раз.

кто-нибудь знает, как это сделать? или может указать на мою ошибку?

1 Ответ

0 голосов
/ 11 января 2012

У вас просто есть логическая ошибка. Используйте приведенный ниже код в ccTouchesBegan. Он будет отлично работать, если вам нужно ...

if (click == false) 
{
    return;       
}
// the else code starts when the button has been pressed.
else if(click == true)
{
    CCLOG(@"you have touched the interface!!");
    click=false; // You need to make false if you want to make touch single time enabled
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...