0

cocos2d と cocosBuilder を使用しています。開始アニメーションを実行しようとしていますが、終了したら、すべての子ノードにアイドル アニメーションを実行させます。

アニメーションの開始方法:

(無効) onEnter {

[super onEnter];

CCLOG(@"onEnter being called");

// Schedule a selector that is called every frame
[self schedule:@selector(update:)];

// Make sure touches are enabled
self.touchEnabled = YES;

//intro animation
CCBAnimationManager* animationManager = self.userObject;
animationManager.delegate = self;

[animationManager runAnimationsForSequenceNamed:@"words"];

}

そして、これは私の completedAnimationSequenceNamed がどのように見えるかです:

(void) completedAnimationSequenceNamed:(NSString *)name{

CCLOG(@"animation ended");

for(CCNode *c in [self children])
{
    if([c isKindOfClass:[GameObject class]])
        [c playIdleAnimation];
}

}

何らかの理由で、私の completedAnimationSequenceNamed が 1 秒間に何度も繰り返し呼び出されているため、子供たちは常にアイドル状態のアニメーションを再開します。

何か案は?

4

1 に答える 1

1

これは、この問題に遭遇した他の人のためのものです。

「(void) completedAnimationSequenceNamed:(NSString *)name」メソッドが適切に機能するためには、animationManager から実行中のアニメーションを使用する代わりに、(cocosBuilder プロジェクトで) アニメーションを自動的に開始する必要があります。

animationManager の runAnimation メソッドを使用すると、(本質的に) コールバック メソッドが壊れてしまいます。しかし、それを取り出してアニメーションを自動的に実行すると、期待どおりにコールバックされました。

于 2013-06-20T16:43:29.533 に答える