要点: 我正试图在用户按住屏幕时“向上”移动CCSprite。我正在使用Cocos2d v3.1并使用Xcode 5.1.1
我相信我应该使用UILongPressGestureRecognizer来识别用户何时按住屏幕。当我运行程序时,我在控制台中看到“已识别的保留”消息。 CCAction已完成。识别到Hold或LongPress后,精灵应向上移动,直到用户将手指从屏幕上抬起。
我还打算在游戏中使用点按和滑动手势。不应同时使用手势。
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longHold:)];
longPress.minimumPressDuration=1.0f;
[[[CCDirector sharedDirector] view] addGestureRecognizer:longPress];
-(void) longHold:(UILongPressGestureRecognizer*)gesture{
CCLOG(@"Recognized Hold");
if(gesture.state==UIGestureRecognizerStateBegan){
id climb = [CCActionMoveBy actionWithDuration:2.0f position:ccp(0,25)];
[_hero runAction:climb];
CCLOG(@"Recognized Hold Action");
}
else{
return;
}
}
我倾向于在longHold方法中使用while语句而不是“if”语句。当我使用while语句时,精灵不会移动,当我从屏幕上抬起手指时,while循环继续执行,直到我停止程序。
这是我在控制台中看到的:
2014-09-19 16:22:25.591 asdf [39402:60b] Recognized Hold
2014-09-19 16:22:25.665 asdf [39402:60b] Recognized Hold Action
2014-09-19 16:22:25.666 asdf [39402:60b] Recognized Hold Action
2014-09-19 16:22:25.666 asdf [39402:60b] Recognized Hold Action
2014-09-19 16:22:25.666 asdf [39402:60b] Recognized Hold Action
我应该使用以下方法:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {
return YES;
}