我是CCAnimations
cocos2D 的新手,遇到了一个很难解决的问题。
我正在制作一个基本的平台游戏,玩家精灵有各种动画需要根据玩家的状态运行。
我的图层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
。
- 我究竟做错了什么?
- 有没有更好的方法来做到这一点?
谢谢!