Я хочу, чтобы что-то произошло с 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 каждый раз, когда я прикасаюсь к интерфейсу. я просто хочу, чтобы он делал это один раз, а затем, когда я снова нажимаю кнопку, он должен сделать это только один раз.
кто-нибудь знает, как это сделать? или может указать на мою ошибку?