0

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、違いはありませんでした。

4

1 に答える 1

1

デバイスの画面サイズに等しい にCCMenuデフォルト設定されていることがわかりました。contentSizeこれにより、使用していた位置でシーンの 1/2 を効果的にカバーできました。そのため、コンテンツ サイズを実際のメニュー項目の全体サイズに近いサイズに設定する必要がありました。[menu setContentSize:CGSizeMake(400, 50)];

于 2013-05-08T14:20:56.600 に答える