使用ccbanimationmanager运行动画后运行另一个动画

时间:2013-03-19 07:53:53

标签: cocos2d-iphone cocosbuilder

我正在使用cocosbuilder 2.1运行cocos2d,我使用cocosbuilder动画委托(CCBAnimationManagerDelegate::completedAnimationSequenceNamed)在动画完成时收到通知,并采取行动,例如发射另一个cocosbuilder动画。

第一次从委托运行foodfactoryshow动画时运行正常,动画完成后,它也正确运行restoration动画。但是,当restoration动画完成后,name方法的参数-(void) completedAnimationSequenceNamedNULL

-(void) completedAnimationSequenceNamed:(NSString*)name
{
if ([name isEqualToString:@"foodfactoryshow"])
{
    [manager runAnimationsForSequenceNamed:@"restoration"];
}
if ([name isEqualToString:@"restoration"])
{
    [self colorLayerChanged];
    self.gameLayer.isLock = true;
}
}

这是一个错误还是我不应该使用CCBAnimationManagerDelegate::completedAnimationSequenceNamed方法运行动画!?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我认为这是一个CCBReader错误。在CocosBuilder github页面(https://github.com/cocos2d/CocosBuilder/issues/121)中有一个关于它的公开问题。它应该在最新版本的CocosBuilder + CCBReader中修复,但是,如果要使用2.1版本,可以将CCBAnimationManager的“sequenceCompleted”方法更改为以下内容:

- (void) sequenceCompleted
{
    NSString *completedSequenceName = [runningSequence.name copy];
    int nextSeqId = runningSequence.chainedSequenceId;
    runningSequence = NULL;

    if (nextSeqId != -1)
    {
        [self runAnimationsForSequenceId:nextSeqId tweenDuration:0];
    }

    [delegate completedAnimationSequenceNamed:completedSequenceName];
    [completedSequenceName release];
}