Cocos2D로 만든 앱이 여러 개 있습니다.Cocos2D 2.0은 1.0과 다른 동작을합니다.
일부는 Cocos2D의 새로운 릴리스 2.0으로 업그레이드 중입니다. 내가 사용하는 방법은 다음과 같습니다
- 나는 표준 템플릿에서 비어있는 새 프로젝트를 만들
- 나는 일반적으로 내 초기 레이어로 레이어 helloworld를 유지
새 프로젝트에 모든 파일을 이동 . Cocos2D가 처음으로 introLayer를 생성하고 이전 버전과 마찬가지로 Helloworld를로드하기 위해 동작을 되돌려 보았습니다. 그 말은, 나는 몇 가지를 발견했다 :
- Helloworld의 init 메소드 내부의 동작이 다른 점이있다. 나는 오리엔테이션이 init 메소드 내에서 부정확하게보고되었음을 알았다. 앱이 단지 풍경 일지라도 항상 세로로보고됩니다. 제가 주목 한 것은 그것이 감독이 완전히 초기화되지 않은 것과 같습니다. 감독의 견해를 사용하려고 시도하면이 사실이 확인되었습니다. 이 뷰는 Helloworld의 init 메소드 내에서 사용하려고하면 항상 유효하지 않은 것으로 나타납니다.
해결하기 위해 모든 코드를 Helloworld의 onEnter 메서드로 옮겼습니다. 이제 Helloworld와 감독이 모두 초기화되어 모든 것이 작동합니다.
이 방법은 Cocos2D 1.0을 2.0으로 업그레이드 한 첫 번째 응용 프로그램에서 작동했지만 현재 Cocos2D 2.0beta에서 2.0 최종으로 변환하는 응용 프로그램에는 문제가 있습니다.
지금이 문제는 helloworld를 어떤 터치를 트리거하지 않고 그래, 난이 곳이있다이다 :
2.0 감지 터치에서 helloworld를 방지 할 수있는 일-(void) registerWithTouchDispatcher
{
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
}
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
return YES;
}
? Helloworld의 init 메소드가 2.0 베타 또는 1.0에서와 같이 동작하도록하려면 어떻게해야합니까?
참고 : Helloworld가로드 될 때 ccTouchBegan 및 registerWithTouchDispatcher가 호출되지 않습니다.
감사합니다.
이제 이것을 onEnter에 놓아야합니다. [[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate : self priority : 0 swallowsTouches : YES]; 어떤 이유로 registerWithTouchDispatcher가 Helloworld에서 자동으로 더 이상 호출되지 않습니다. 또 다른 점은 CCTargetedTouchDelegate를 인터페이스의 Delegate 선언 Helloworld에 두어야한다는 것입니다. 이렇게하면 ccTouchBegan이 트리거됩니다. 이제는 터치를 지원하는 모든 수업에서이 작업을 수행해야합니다 ... 버그입니까? – SpaceDog
예, 저는 CClayer 클래스에서이 작업을 수행하고 있습니다. Helloworld는 기본 템플릿에 의해 생성됩니다. 지금 다른 많은 문제를 발견했으며, 2.0이 수정 될 때까지 2.0 베타 버전을 사용하고있을 것입니다. 어쨌든 감사합니다. – SpaceDog