【发布时间】:2013-01-18 14:18:35
【问题描述】:
我正在尝试实现将改变单位方向的游戏控制 移动。所以如果我向右滑动它会向右转,如果我向下滑动它会转向向下等等。
这是 cocos2d 游戏,我正在使用 CCNode+SFGestureRecognizers 和 UISwipeGestureRecognizer。
现在我有下一个实现
UISwipeGestureRecognizer *rightSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleRightSwipe:)];
[self addGestureRecognizer:rightSwipeGestureRecognizer];
rightSwipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
rightSwipeGestureRecognizer.delegate = self;
[rightSwipeGestureRecognizer release];
UISwipeGestureRecognizer *upSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleUpSwipe:)];
[self addGestureRecognizer:upSwipeGestureRecognizer];
upSwipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionUp;
upSwipeGestureRecognizer.delegate = self;
[upSwipeGestureRecognizer release];
UISwipeGestureRecognizer *leftSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleLeftSwipe:)];
[self addGestureRecognizer:leftSwipeGestureRecognizer];
leftSwipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
leftSwipeGestureRecognizer.delegate = self;
[leftSwipeGestureRecognizer release];
UISwipeGestureRecognizer *downSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleDownSwipe:)];
[self addGestureRecognizer:downSwipeGestureRecognizer];
downSwipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionDown;
downSwipeGestureRecognizer.delegate = self;
[downSwipeGestureRecognizer release];
但问题在于,要识别以下手势,您需要将手指从屏幕上抬起。如果您在第一次滑动后没有抬起手指,它只会识别第一次滑动。
现在:
应该如何:
最好的方法是什么?谢谢!
【问题讨论】:
-
我不熟悉 cocos2d,但听起来你最好自己跟踪触摸并通过跟踪先前的 x,y 和当前的 x,y 来确定方向。滑动手势通常是一个固定的循环手势(你只做一次)并且不会触发连续运动(否则一切都会是滑动)。在标准的 UIKit 中,你有 touchesMoved: 方法,只要触摸在屏幕上移动,就会调用该方法。不确定 cocos2d 等价物是什么,但可能值得研究。
标签: iphone ios cocos2d-iphone uigesturerecognizer swipe