我正在学习 Strougo/Wenderlich 教程(太空海盗项目)。我在第 4 章遇到了麻烦。
在 RadarDish.m 中:
-(void)initAnimations
{
[self setTransmittingAnim: [self loadPlistForAnimationWithName:@"transmittingAnim" andClassName:NSStringFromClass([self class])]];
}
-(void)changeState:(CharacterStates)newState {
[self stopAllActions];
id action = nil;
[self setCharacterState:newState];
switch (newState) {
.
.
case kStateIdle:
action = [CCAnimate actionWithAnimation:transmittingAnim
restoreOriginalFrame:NO];
break; }
if (action != nil) {
[self runAction:action];
}
}
-(id)init
{
self=[super init];
if (self!=nil) {
.
.
[self initAnimations];
.
.
}
return self;
}
与教程中的代码完全相同。失败:
*** Assertion failure in -[CCAnimate initWithAnimation:], /Users/macowner/Documents/examples/SpaceViking/SpaceViking/libs/cocos2d/CCActionInterval.
使用带断点的调试器,我注意到传输动画的值 = nil。
所以,如果我把线与
[self setTransmittingAnim:
[self loadPlistForAnimationWithName:@"transmittingAnim" andClassName:NSStringFromClass([self class])]];
在这种情况下,
-(void)changeState
动画可以正常工作。
为什么[self initAnimations]
from(id)init
不被调用?我使用 cocos2d v.2 模板。
非常感谢提前。