2 レイヤーのシーンがあります。メインレイヤーとその上のhudレイヤー。hud には、ボタンとタイマー ラベルを含むメニューしかありません。私はCCNode-SFGestureRecognizersを使用しているので、メインレイヤーの画面中央にUIGestureRecognizers
それぞれ標準を付けることができます。CCSprites
奇妙なことは、メニューが赤い線の右側の領域のすべてのタッチ イベントを食べているように見えることです。メニューの下部だけでなく、画面の上部までずっと。メニューをレイヤーに追加しない場合、またはそのレイヤーをメインレイヤーの後ろに配置すると、すべて正常に機能しますが、視覚的には機能しません。これを修正するにはどうすればよいですか?
//The hud layer setup
CCMenu *menu = [CCMenu menuWithArray:@[_recordButton, resetButton, debugButton, _playButton]];
[menu setPosition:ccp(windowSize.width - 225, 50)];
[menu alignItemsHorizontallyWithPadding:50];
[self addChild:menu];
//The scene setup in another class
self.mainLayer = [MainLayer node];
[self addChild:_mainLayer z:0];
self.hudLayer = [HudLayer node];
[self addChild:_hudLayer z:1];
編集:メニューの優先度を設定しよう[menu setHandlerPriority:128];
としましたが、それが機能しない場合は、サブクラス化CCMenu
してオーバーライドしました:
-(void) registerWithTouchDispatcher
{
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:200 swallowsTouches:NO];
}
swallowsTouches:
set toNO
で試してみましたがYES
、違いはありませんでした。