2012-01-17 25 views
0

我正在努力使Bullet引擎與遊戲代碼的其餘部分集成。在Cocos2d中鏈接類方法

這包括使Player類能夠從BulletCache類調用方法而不會崩潰程序(錯誤讀取'無法識別的選擇器發送到實例...')。

我在嘗試整合到目前爲止,包括創建播放器類的接口例如爲:

@interface Player : LevelObject 
{ 
BulletCache *bulletCache; 
} 

一個BulletCache的對象,但我認爲需要有一個構造函數,以進一步連接兩個班。雖然兩者都是CCNode的子類

任何人都可以給我任何關於如何進一步鏈接兩個類的進一步提示,所以Player類的方法可以調用BulletCache的方法?

編輯:因爲我得到了一個無限循環,並在控制檯不停地報告在BulletCache類相關的錯誤一個CCSprite,我把旁邊BulletCache方法斷點:

CCSpriteFrame* bulletFrame = [[CCSpriteFrameCache sharedSpriteFrameCache] 
spriteFrameByName:@"bullet1big e0000.png"]; 

奔着「建設&調試「。點擊mainMenu上的'New Game'按鈕,控制檯顯示加載日誌,然後立即停止,控制檯的底部顯示消息: 「GDB:在斷點1停止(命中次數:1)' - init-Line 84'84行是我放置斷點的地方,所以它看起來像程序有這個代碼的問題,但它看起來不正確,方法應該匹配 - 我沒有得到任何'警告:。-spriteFrameByName可能不CCSpriteFrame」

回答

1

響應確保導入BulletCache類 您還需要初始化bulletCache在播放器的init方法

然後BulletCache類的任何實例方法,可以通過所謂的

[bullectCache somemethod] 

一些方法需要通過法BulletCache類

+0

THX更換!我如何着手初始化init方法中的bulletCache?我得到了一般要點,但是我會用什麼方法來初始化,例如 - (id)init {BulleCache * bulletCache = [BulletCache init]; } 我不知道我可以用什麼其他方法來初始化Player類中的Class。 – GPP 2012-01-17 19:25:31

+1

如果你已經聲明它是一個實例變量,那麼你只需要做bulletCache = [BulletCache init];在Player類的init或scene方法中。 – Shubhank 2012-01-18 06:46:43

+0

我加了 bulletCache = [BulletCache init]; 方法在Player init方法中,但它創建了一個無限循環並使應用程序崩潰。任何幫助? – GPP 2012-01-18 08:33:36