2016-01-19 2 views
0

У меня есть функция обратного вызова на временной шкале в Spritebuilder. , и у меня возникла анимация временной шкалы. Моя цель - отключить прикосновение, пока анимация не завершится.Cocos2d, быстро найти, когда анимация временной линии Spritebuilder завершена с помощью обратного вызова

func triggerTimelineAction(nodeName: CCNode){ 
    self.userInteractionEnabled = false; 
nodeName.animationManager.runAnimationsForSequenceNamed("nodeMainAction") 
nodeName.animationManager.setCompletedAnimationCallbackBlock(b: ???)){ 
self.userInteractionEnabled = true; 
} 
} 

Вопрос: как я могу объявить ключевой кадр и подключить его/получить.

UPD: мне сказали, чтобы передать функцию в setCompletedAnim ... так я сделал мой код выглядит следующим образом: функ animationCompleted() { self.userInteractionEnabled = истина; }

func triggerTimelineAction(nodeName: CCNode){ 
self.userInteractionEnabled = false; 
     nodeName.animationManager.runAnimationsForSequenceNamed("nodeMainAction") 
nodeName.animationManager.setCompletedAnimationCallbackBlock(b: @selector(animationCompleted)) 

}

, на котором я получил ошибку «Не удается преобразовать значение типа() ->() к ожидаемому типу аргумента (AnyObject) -> Пустота

Видимо, это в большей степени связаны к Cocos2d syntaxis. будет копать дальше в этом направлении

ответ

0

Таким образом, после сессии с codementor я понял, что я использовал функцию setCompletedAnimationCallbackBlock неправильно.

In this code 
activeNode.animationManager.setCompletedAnimationCallbackBlock(b: ((AnyObject!) -> Void) 

Я пытался передать аргументы как AnyObject , когда на самом деле это блок, который возвращает эта функция. Так что этот код работает для меня

activeNode.animationManager.setCompletedAnimationCallbackBlock { (object: AnyObject!) -> Void in 
    print(object) 
} 

где объект просто пихты время объявленное имя для элемента, который получает возвращается. Функция печати показала, что возвращаемый объект является CCAnimationManager, поэтому он равен предыдущему синтаксису, когда вам нужно было запуститьAction и назначить action.delegate для себя, а затем фактически поймать обратный вызов. Надеюсь, эта информация поможет кому-то.