私の Cocos2d 2.0 iOS ゲームでは、CCMenuAdvanced を使用してスクロール メニューを作成します。問題は、メニューの見えない部分もタッチを処理しているように見えることです。
コードは次のとおりです (boundaryRect を適切に表示およびトリミングするために必要です)。
// background is full screen, with all pixels transparent
// except the part where menu shows
CCSprite *menuBackground = [CCSprite spriteWithFile:@"scrollingmenubackground.png"];
//...
[self addChild:menuBackground];
//...
//create menu items
CCMenuAdvanced *settingsMenu = [CCMenuAdvanced menuWithItems:item1, item2, item3, nil];
//...
[menuBackground addChild:settingsMenu];
// foreground is full screen, with an image
// with a transparent hole where the menu shows
CCSprite *foreground = [CCSprite spriteWithFile:@"scrollingmenuforeground.png"];
[menuBackground addChild:foreground];
//...
これで問題なく動作し、メニューが表示され、正しくトリミングされ、タッチが処理されます。ただし、問題は、表示されているメニューの下をクリックすると、その前に不透明なピクセルを持つスプライトがあるにもかかわらず、メニューのタッチを処理することです ( foreground
)。
前景をメニューよりも高い zorder に設定して zorder をいじってみましたが、何も変わらないようです。
menuBackground.zOrder = 1;
settingsMenu.zOrder = 2;
foreground.zOrder = 3;
メニューの優先順位も に設定してみましINT_MIN
たkCCMenuHandlerPriority - 1
が、効果はありませんでした。
ユーザーに表示されている部分でのみメニューが応答するようにするにはどうすればよいですか?
ありがとうアナンド