我是在cocos2D中使用CCAnimations
的新手,我遇到了一個我很難解決的問題。EXC_BAD_ACCESS當切換CCAnimations
我正在做一個基本的平臺遊戲,玩家精靈有各種動畫需要根據玩家的狀態運行。
我在層的init
方法如下代碼:
sprite = [CCSprite spriteWithSpriteFrameName:@"stand.png"];
standingSprites = [NSArray arrayWithObjects:
[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"stand.png"],
nil];
runningSprites = [NSArray arrayWithObjects:
[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"run1.png"],
[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"run2.png"],
nil];
standingAnimation = [CCAnimation animationWithFrames:standingSprites delay:0.2f];
runningAnimation = [CCAnimation animationWithFrames:runningSprites delay:0.2f];
animationAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:standingAnimation]];
[sprite runAction:animationAction];
這工作與任一兩個動畫的預期。但是,當玩家靜止時我想運行standingAnimation
,當玩家正在運行時我想運行runningAnimation
。我試圖做到這一點,如下所示:
-(void)walk {
if(!isWalking) {
isWalking = true;
[sprite stopAction:animationAction];
animationAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:runningAnimation]];
[sprite runAction:animationAction];
}
}
第二到最後一行導致程序崩潰,造成EXC_BAD_ACCESS
(上引用0x0
)。在調試器中逐步調試walk
,看起來沒有任何相關的指針是空的。
從堆棧跟蹤:
2012-06-03 10:59:59.907 ThirtyMinutes[9876:6403] *** Terminating app
due to uncaught exception 'NSInvalidArgumentException', reason:
'-[NSCTFontDescriptor frames]: unrecognized selector sent to instance
0x7f808d93e9f0'
0x7f808d93e9f0
是runningAnimation
地址。
- 我在做什麼錯?
- 是否有這樣做的更好的辦法?
謝謝!
在動畫上調用保留修復它。謝謝! – jonmorgan