2013-02-18 3 views
0

Cocos2D의 특이점을 발견 했으므로 수정할 수 없습니다. AppDelegate에서 CCScene 인 메뉴를로드합니다. 이 장면에는 CCLayer가 있으며, CCLayer 자체에 CCMenu가 있습니다. 모든 것은 처음부터 끝까지 찾아냅니다. 게임이 끝난 후 사용자를 GameOverScene에 데리고 가서 메뉴로 돌아 오도록합니다. 메뉴 장면을 새로 고침하고 [[CCDirector sharedDirector] replaceScene:menu]으로 전화합니다. 이 메뉴를 입력 한 후에는 모든 입력 기능이 아닙니다. 메뉴 항목을 더 이상 누를 수는 없지만 메뉴 항목을 이동/다중 터치하여 항목을 실행할 수 있습니다. 뭐라 구요?두 번째로 입력되는 장면에서 입력이 허용되지 않습니다.

입력을 받기 위해 CCScene을 초기화하는 초기화 방법이 있습니까? 그렇다면이 CCMenu의 입력을 받아 들일 것입니까?

답변

1

마침내 알아 냈습니다. 대답은 내 코 바로 아래였습니다. 게임 개발 초기에는 KKInput이 제스처를 삼키는 것을 막을 수있는 방법이 필요했습니다. 나는이 작업의 파급 효과 완전히 모르겠지만, 이런 식으로 그렇게 할 수 있었다 :

KKInput* input = [KKInput sharedInput]; 
UITapGestureRecognizer* tapGestureRecognizer; 
tapGestureRecognizer = input.tapGestureRecognizer; 
tapGestureRecognizer.cancelsTouchesInView = NO 

은 기본 Kobold2D 동작은 수신에서 CCMenu을 방지하고 모든 접촉을 삼키는 것 같다 모든 탭 제스처.

1

어떤 수업에서 onEnter, onExit 등과 같은 on * 메서드를 재정의 했습니까?

그렇다면 슈퍼 구현 (예 : [super onEnter])을 호출해야합니다. 그렇지 않으면 예약 또는 입력과 같은 일부 cocos2d 기능이 작동을 멈출 수 있습니다.

+0

처음에 확인한 내용이지만 onEnters를 재정의하지 않았습니다. – Clev3r

+0

정말 이상합니다. 메뉴 항목은 탭을 등록하지 않지만 스 와이프/팬/멀티 터치는 완벽하게 작동합니다. – Clev3r

+0

또 다른 원인은 씬이 새어 나왔기 때문일 수 있습니다. 장면의 dealloc에 ​​중단 점을 설정하십시오. 오래된 장면이 메모리에 남아 있지 않으면 모든 종류의 이상한 동작이 발생할 수 있습니다. – LearnCocos2D