Запустить другую анимацию после запуска анимации с помощью ccbanimationmanager

Я запускаю cocos2d с cocosbuilder 2.1 и использую делегат анимации cocosbuilder (CCBAnimationManagerDelegate::completedAnimationSequenceNamed) получать уведомления о завершении анимации и выполнять действия, такие как запуск другой анимации кокосостроителя.

Он работает нормально в первый раз foodfactoryshow анимация запускается из делегата и после завершения анимации также запускается restoration анимация правильно. Однако когда restoration анимация завершена, параметр name за -(void) completedAnimationSequenceNamed метод NULL!?

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

Это ошибка или я не должен запускать анимацию из CCBAnimationManagerDelegate::completedAnimationSequenceNamed метод!?

Заранее спасибо за помощь.

1 ответ

Решение

Я считаю, что это ошибка CCBReader. Существует открытая проблема на странице github CocosBuilder ( https://github.com/cocos2d/CocosBuilder/issues/121). Это должно быть исправлено в последней версии CocosBuilder + CCBReader, однако, если вы хотите использовать версию 2.1, вы можете изменить метод sequenceCompleted CCBAnimationManager следующим образом:

- (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];
}
Другие вопросы по тегам