2014-12-29 3 views
2

Я пытаюсь создать игру для iPhone Spritebuilder, а мой главный герой _player - это CCNode, чей дочерний элемент является CCBFile, который содержит простую анимацию персонажа.Spritebuilder как можно программно изменить анимацию (CCB-файл) CCNode?

Я хочу изменить CCBFile этого _player на другой CCBFile с именем ForwardDash.ccbi, который содержит анимацию «атак», когда игрок касается экрана.

Это то, что я пытаюсь:

//_player is a CCNode, its first child is the CCBFile with the idle animation. 
//animar is a pointer to the CCBFile with the ForwardDash animation 

CCSprite *wat = _player.children[0]; 
      CCNode *animar = [CCBReader load:@"ForwardDash"]; 
      [wat setSpriteFrame: (CCSpriteFrame*)animar]; 

Он терпит неудачу и дает мне ошибку: 'Thread 1: сигнал SIGABRT'

+0

это потому, что Animar является CCNode (или подкласс) экземпляра, а не CCSpriteFrame – LearnCocos2D

ответ

1

setSpriteFrame не метод, который вы ищете. Если вы хотите сохранить текущие настройки CCB вы должны быть в состоянии сделать то, что вы хотите, выполнив:

CCSprite *wat = _player.children[0]; 
[wat removeFromParent]; 
CCNode *animar = [CCBReader load:@"ForwardDash"]; 
[_player addChild:animar]; 

Хотя это работает, я бы порекомендовал вам попробовать воспользоваться различными анимационными сроков в SpriteBuilder. Вы можете добавить новые временные рамки в файл CCB, а затем программно изменить анимацию, не удаляя и не добавляя новый узел. Вы можете прочитать немного больше об использовании временных линий here. После настройки, вы будете иметь возможность начать новую анимацию с:

CCSprite *wat = _player.children[0]; 
CCAnimationManager* animationManager = wat.animationManager; 
[animationManager runAnimationsForSequenceNamed:@"ForwardDash"];