我有一个CCSprite子类,最初我用
设置了它所以我有以下代码:
-(void)onEnter {
[super onEnter];
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
}
-(void)onExit {
[super onExit];
[[[CCDirector sharedDirector] touchDispatcher] removeDelegate:self];
}
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
if ([self containsTouch:touch]) {
// do stuff
return YES;
}
return NO;
}
然后我意识到我实际上不想使用touchBegan,因为我想检测是否向下拖动了一个精灵 - 所以我想使用touchMoved和touchEnded而不是touchBegan。
但是,当我实现这些方法时,它们不会被调用...
如何判断sprite的触摸何时结束,以及是否“刷过”?
答案 0 :(得分:1)
启用多个触摸:在appdelegate的applicationDidFinishLaunching:application
方法中,将多个触摸设置为YES:[glView setMultipleTouchEnabled:YES];
然后在您的CCLayer子类(您正在用于检测触摸的类)中,在init方法中添加self.isTouchEnabled = YES;
现在应该调用你的多点触控方法。
滑动:cocos2d不支持开箱即用的手势。你可能不得不自己动手。您可以从苹果事件处理指南about gestures开始。在raywenderlich.com上的How To Drag and Drop Sprites with Cocos2D totorial使我感到高兴。
答案 1 :(得分:0)
为了让调度员调用您的方法(移动,结束,取消),您必须首先声明触摸,即。你将处理事件。当你返回YES时,这是在ccTouchBegan中完成的。之后,您将收到其他活动。
答案 2 :(得分:0)
CCTouchableSprite - 我的可触摸的CCSprite子类与Objective-C块,你可以使用touch Moved来检测你想要的东西。