2012-02-23 94 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

預先感謝任何幫助 盧卡

一個小更新:這個問題不會1.0.1版本的發生,與EAGLView更換CCGLView。 所以我認爲這可能是這個版本的一個小錯誤。

不幸的是,我不能切換到1.0.1,因爲我需要box2d v2.2的一些功能,只有使用cocos2d v2.0。 我想讓box2d v2.2與cocos v1.0.1一起工作,但它變得非常難看!

任何人都知道我可以如何修復它在2.0或至少點我在正確的方向嗎?問題在哪裏?在CCDirector或CCGLView中?

感謝 盧卡

+0

在你的代碼中看起來很腥的一件事是「[director runWithScene:[HelloWorldLayer scene]];」 CCLayer沒有場景屬性。你爲什麼要把一個CCScene對象放在一個圖層中?你的場景中是否有任何東西需要渲染?我在一個測試應用程序中嘗試了你的代碼,它完美地工作。 – 2012-07-12 17:54:28

回答

0

你必須有所有的cocos2d的初始化代碼。 Cocos2D創建一個openGL渲染上下文,然後繪製到顯示sprite。如果你看看coco的模板應用,在AppDelegate中,會有一些初始化的東西。

我甚至不確定是否有可能(如果它很容易)將cocos2d場景合併到現有的iOS應用程序中。

+0

將cocos2d場景合併到現有的iOS(或OS X)應用程序中是絕對有可能的。當然,您必須提取cocos2d源文件。 – Clay 2013-02-01 14:54:00

0

當你完成所有的初始化工作後,尼克布爾在談論,你需要注意一件事情:cocos2d借鑑他自己的CCLayer。但是我認爲這個圖層和圖層是所有UIView子類 - 都是一樣的東西。如果您能夠替代它們或以某種方式鏈接,您可以在視圖中執行任意cocos2d工作人員。這應該是你的起點,祝你好運。

+0

我試過Nick Bull說過的,將所有內容從appdelegate複製到viewDidLoad,但沒有任何改變。 你能詳細說說你的建議嗎?這似乎很有趣,但我不太明白。你能告訴我更多嗎? – Luca 2012-02-23 16:43:12

+0

對不起,我不能說更多:我從來沒有試圖做你在做什麼,這只是我的猜測。你看,cocos2d使用UIKit的許多特性,而不是乾淨的形式:它們中的很多(或者可能都是?)從UIKit中分類出來。可能吧,CCLayer也是。如果是這樣,你可以嘗試用cocos2d中的CCLayer替換UIView中的圖層。我只是希望來自UIView的圖層不受保護或其他... – SentineL 2012-02-23 17:14:20