2012-01-17 22 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