내 Cocos2d 2.0 iOS 게임에서 CCMenuAdvanced를 사용하여 스크롤 메뉴를 만듭니다. 문제는 메뉴의 보이지 않는 부분도 다루는 것 같다는 것입니다.CCMenuAdvanced가 위에 스프라이트가있을 때도 클릭됩니다.
// 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];
//...
지금이 잘 작동하고, 메뉴가 표시가 올바르게 잘립니다와 접촉을 처리한다 : 여기
은 (boundaryRect 작물 제대로 표시하고 얻을 필요) 코드입니다. 그러나 문제는 내가 볼 수있는 메뉴 아래를 클릭 할 때, 그 앞에 불투명 한 픽셀이있는 스프라이트 (foreground
)가 있더라도 메뉴의 터치를 여전히 처리한다는 것입니다.
포어 그라운드를 메뉴보다 높은 zorder로 설정하여 zorder를 부지런히 시도했지만 아무 것도 변경하지 않는 것 같습니다.
menuBackground.zOrder = 1;
settingsMenu.zOrder = 2;
foreground.zOrder = 3;
는 또한
INT_MIN
뿐만 아니라
kCCMenuHandlerPriority - 1
,하지만 효과 메뉴의 우선 순위를 설정했습니다.
사용자가 볼 수있는 부분 만 메뉴가 응답하도록하려면 어떻게합니까? 아난드
무엇이 질문입니까? 이것은 나에게 버그 리포트/기능 요청과 비슷하게 들린다. 그것이 CCMenu와 CCMenuAdvanced가 작동하는 방법입니다. 그리고 zOrder는 입력과 관련이 없습니다. – LearnCocos2D
CCMenuAdvanced가 전경 (여기서는 경계 rect 내에서만 있음)에있는 곳에서만 클릭에 응답하려고합니다. 위의 스프라이트가있는 스크롤 아웃 된 부분에서는 클릭에 응답해서는 안됩니다. 어떻게해야합니까? – Anand