2010-10-14 34 views
0

我想添加動畫到我的遊戲(iPhone應用程序,使用cocos2d)。iPhone - cocos2d - 動畫和C++類

遊戲是用C++編寫的,現在我想在iPhone上運行它,所以大多數類都在C++中。

事情看起來像那樣。 我在init函數的obj-c類中創建CCSprite,CCAction,然後在sprite上運行CCAction。 而動畫正在工作。

但我想把這個CCSprite和CCAction變量放在我的C++類中。 我在init類中創建* CCSprite並將此指針發送給C++類。然後,我創建CCAction並在精靈上運行它。

而在這之後,當我的初始化函數(OBJ-C類)做的事:

return self; 

然後應用程序正在運行,運行和運行,沒有任何反應。我在控制檯只接收這樣的信息:

*斷言故障 - [CCSprite的SetTexture:],/Users/Michal/..../libs/cocos2d/CCSprite.m:898 終止於響應到SpringBoard的終止。

我不知道接下來應該怎麼做... 是否可以在C++類中保持CCSprite/Action等成功?

+0

查看setTexture方法並查找NSAssert()。它會給你一些線索來找出問題所在。 – Francescu 2010-10-27 07:31:27

回答

3

確保已正確初始化紋理您嘗試使用它像這樣前:

CCTexture2D *redButtonNormal = [[CCTextureCache sharedTextureCache] addImage:@"RedButtonNormal.png"]; 

然後initalize精靈(或精靈的子類 - 在這個例子中spuButton是CCSprite的一個子類):

spuButton *redButton = [spuButton spuButtonWithTexture:redButtonNormal]; 

注:因爲它是一個子類,我不得不設置在init方法是這樣的(如果你繼承CCSprite必須這樣做):

+ (id)spuButtonWithTexture:(CCTexture2D *)normalTexture 
{ 
    return [[[self alloc] initWithTexture:normalTexture] autorelease]; 
} 

- (id)initWithTexture:(CCTexture2D *)aTexture 
{ 
    if ((self = [super initWithTexture:aTexture])) { 

     state = kButtonStateNotPressed; 
    } 

    return self; 
}