2012-02-23 18 views
0

기존 앱의 탭 안에 cocos2d 장면을 통합하는 데 문제가 있습니다. cocos2d와 함께 제공되는 Xcode 템플릿을 사용하여 장면을 개발했으나 정상적으로 작동하지만 기존 앱에서 동일한 장면을로드하려고하면 나오는 모든 것이 검정색 화면입니다. 내가 탭UIKit 앱에 cocos2d 통합

-(void)viewDidLoad { 
     director = [CCDirector sharedDirector]; //declared in the header file 
     //declared in the header file, sized as whole screen minus the tab bar 
     coolview = [CCGLView viewWithFrame:CGRectMake(0,0, 320,321) pixelFormat:kEAGLColorFormatRGB56 depthFormat:0 preserveBackbuffer:NO sharegroup:nil multiSampling:NO numberOfSamples:0]; 
     [director setView:coolview]; 
     [self setView:coolview]; 
     [director setAnimationInterval:1.0/60]; 
     [director setDelegate:self]; 
     [director setProjection:kCCDirectorProjection2D]; 
     [director runWithScene:[HelloWorldLayer scene]]; 
     } 

나는 검은 색 화면을 얻을해야하는 이유 어떤 생각에 링크의 UIViewController를로드 할 때

여기에 내가 실행하는 코드는? 내가 뭘 놓치고 있니?

HelloWorld 레이어의 코드가 실행되고 객체가 인스턴스화되지만 렌더링되지 않은 것처럼 보입니다.

은 또한 다음과 같은 의견을 얻을 :

OpenGL error 0x0501 in -[CCShaderCache loadDefaultShaders] 174 
OpenGL error 0x0501 in -[CCTextureAtlas initVAO] 167 
OpenGL error 0x0501 in -[CCDirector setView:] 308 
OpenGL error 0x0501 in -[CCTextureAtlas initVAO] 167 

을하지만 오류 코드의 의미를 찾을 수 없어. 내가 사전에 어떤 도움적인 Cocos2D 버전 2.

감사를 사용하고 루카

약간의 업데이트 :이 문제가 EAGLView와 CCGLView 교체, 버전 1.0.1로 발생하지 않습니다. 이것은이 릴리스의 약간의 버그 일 수 있다고 가정합니다.

불행히도 cocos2d v2.0과 함께 제공되는 box2d v2.2의 일부 기능이 필요하기 때문에 불행히도 1.0.1로 전환 할 수 없습니다. 나는 box2d v2.2를 cocos v1.0.1과 함께 작동 시키려고 노력하고있다. 그러나 꽤 추해지고있다!

누구나 내가 2.0에서 수정하거나 적어도 올바른 방향으로 나를 가리킬 수 있음을 알고 있습니다. 문제는 어디에있을 수 있습니까? CCDirector 또는 CCGLView에서?

덕분에 루카

+0

코드에서 불쾌 해 보이는 것은 "[director runWithScene : [HelloWorldLayer scene]];" CCLayer에는 장면 속성이 없습니다. CCScene 오브젝트를 레이어 안에 넣는 이유는 무엇입니까? 당신은 실제로 당신의 씬에서 렌더링 할 것이 있습니까? 테스트 응용 프로그램에서 코드를 시험해 보았는데 완벽하게 작동했습니다. –

답변

0

당신은뿐만 아니라 모든적인 Cocos2D의 초기화 코드를 가지고있다. Cocos2D는 스프라이트를 표시하기 위해 그려지는 OpenGL 렌더링 컨텍스트를 만듭니다. cocos와 함께 제공되는 템플릿 응용 프로그램을 보면 AppDelegate에 초기화 작업 부하가 있습니다.

기존 iOS 앱에 cocos2d 장면을 통합하는 것이 가능한지 (또는있는 경우) 쉽지 않은 것입니다.

+0

cocos2d 장면을 기존 iOS (또는 OS X) 앱에 통합하는 것은 가능합니다. 물론 cocos2d 소스 파일을 가져와야합니다. – Clay

0

Nick Bull이 말하는 모든 초기화 작업을 완료하면 cocos2d가 자신의 CCLayer를 그립니다. 하지만이 레이어와 모든 UIView 하위 안경에있는 레이어는 동일한 것입니다. 링크를 복제하거나 연결하는 방법을 세분화하면 뷰에서 cocos2d 직원을 수행 할 수 있습니다. 이것은 출발점이되어야합니다, 행운을 빈다.

+0

나는 닉 불 (Nick Bull)이 말한대로 appdelegate에서 viewDidLoad까지 모든 것을 복사하여 붙여 넣으려고 시도했지만 아무 것도 변경되지 않았습니다. 제안하신 내용을 자세히 설명해 주실 수 있습니까? 흥미로운 것 같지만 잘 이해하지 못합니다. 제발 좀 더 말해 줄래? – Luca

+0

죄송합니다, 나는 더 이상 말할 수 없습니다. 나는 당신이하고있는 일을 결코 시도하지 않았습니다. 이것은 제 추측 일뿐입니다. cocos2d는 UIKit의 많은 기능을 사용합니다. UIKit에서 서브 클래 싱 된 많은 기능 (또는 모든 기능이있을 수 있습니다)은 깨끗한 형태가 아닙니다. CCLayer도 서브 라인 될 수 있습니다. 그렇다면 UIView의 레이어를 cocos2d의 CCLayer로 대체 할 수 있습니다. UIView에서 레이어가 보호되지 않았거나 그저 바랄뿐입니다. – SentineL