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 被重复调用,每秒多次,导致我的孩子不断地重新启动他们的空闲动画。

有任何想法吗?

4

1 回答 1

1

我让它工作了,这是给遇到这个问题的其他人的。

为了让“(void) completedAnimationSequenceNamed:(NSString *)name”方法正常工作,你必须让你的动画自动启动(在 cocosBuilder 项目中),而不是使用来自 animationManager 的运行动画。

如果我使用 animationManager 中的 runAnimation 方法,它(本质上)会破坏回调方法。但我只是把它拿出来,让动画自动运行,并按预期回调。

于 2013-06-20T16:43:29.533 回答