複数のタッチ処理を理解しようとしていますCCNode
。
私は持っています
Main CCLayer
------> z:2 Hud CCNode
オブジェクトを選択するとき、hudレイヤーでそれmain layer
を制御したい。私はこのQ&Aに従って、複数のレイヤーでタッチを処理する非常に役立つ Cocos2dを使用しました
Main Layer
タッチイベントでは、以下はHudNodeの作業です。
-(void) registerWithTouchDispatcher
{
[[CCDirector sharedDirector].touchDispatcher addTargetedDelegate:self priority:0 swallowsTouches:YES];
}
-(BOOL) ccTouchBegan:(UITouch*)touch withEvent:(UIEvent*)event
{
//detects touched Object and sends it to hud
if (object != nil)
{
//sends it to hud
return true;
}
return false;
}
-(void) ccTouchMoved:(UITouch*)touch withEvent:(UIEvent*)event
-(void) ccTouchEnded:(UITouch*)touch withEvent:(UIEvent*)event
-(void) ccTouchCancelled:(UITouch*)touch withEvent:(UIEvent*)event
Hud CCNodeでは、ccTouchBegan / moved/endedメソッドはいずれも起動されません
-(void) registerWithTouchDispatcher
{
[[CCDirector sharedDirector].touchDispatcher addTargetedDelegate:self priority:0 swallowsTouches:YES];
}
-(BOOL) ccTouchBegan:(UITouch*)touch withEvent:(UIEvent*)event
{
if (object!=nil) {
NSLog(@"Touch began");
return YES;
}
else
return NO;
}
編集:HUDノードのオブジェクトの速度を設定するボタンがあります。object!=nil
ブレークポイントを設定すると-(BOOL) ccTouchBegan:(UITouch*)touch withEvent:(UIEvent*)event
呼び出されないことがわかるため、これとは関係ありません。
-(void)speed1Tapped:(id)sender
{
if (object!=nil) {
NSLog(@"Moving Object is %@:",object!=nil);
}
}
On Log I get:
object is <ObjectATC: 0x13763850>
CCNodeでccTouchBegan/moved / endメソッドが起動されないのはなぜですか?
複数のCCNode、CCLayersでのタッチを処理するにはどうすればよいですか?