
cocos2dで、タッチイベントを検知する方法です。
1.isTouchEnabledをYESに設定
SampleLayer.m1 2 3 4 5 6 7 8 | - (id)init { self = [super init]; if (self) { self.isTouchEnabled = YES; } return self; } |
2.registerWithTouchDispatcherメソッドをオーバーライド
SampleLayer.m1 2 3 4 5 | -(void)registerWithTouchDispatcher { CCDirector *director = [CCDirector sharedDirector]; [[director touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES]; } |
3.各コールバックメソッドをオーバーライド
SampleLayer.m1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | -(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event { CCLog(@"タッチを開始したよ"); return YES; } -(void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event { CCLog(@"タッチを完了したよ"); } -(void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event { CCLog(@"タッチしたまま移動してるよ"); } -(void)ccTouchCancelled:(UITouch *)touch withEvent:(UIEvent *)event { CCLog(@"タッチをキャンセルしたよ"); } |
ちなみに、ccTouchBeganメソッドをオーバーライドしなかった場合、以下のエラーメッセージを吐いてアプリがクラッシュしました。
*** Terminating app due to uncaught exception ‘NSInternalInconsistencyException’, reason: ‘Layer#ccTouchBegan override me’
環境
OS X 10.8
Xcode 4.4
cocos2d v2.0
Xcode 4.4
cocos2d v2.0