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.
ブレークポイントを指定してデバッガーを使用すると、transmittingAnim=nilの値に気づきました。
だから、私が
[self setTransmittingAnim:
[self loadPlistForAnimationWithName:@"transmittingAnim" andClassName:NSStringFromClass([self class])]];
その場合、
-(void)changeState
アニメーションは正しく機能します。
なぜ[self initAnimations]
から(id)init
呼ばれないのですか?cocos2dv.2テンプレートを使用しています。
よろしくお願いします。