Cocos2d,快速查找精灵生成器时间轴动画何时通过回调完成



我在Spritebuilder中的时间轴上有一个回调设置。并且我触发了时间线动画。我的目标是禁用触摸,直到动画完成。

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

问题:如何声明回调关键帧并连接/接收它。

UPD:我被告知要在setCompleteAnim中传递一个函数...所以我让我的代码看起来像: func animationComplete(){ self.userInteractionEnabled = true; }

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

}

我收到错误"无法将类型()->()的值转换为预期的参数类型(AnyObject)->Void

显然,这与 Cocos2d 语法更相关。 将朝这个方向进一步挖掘

因此,在与codementor进行会话后,我发现我不正确地使用了setCompleteAnimationCallbackBlock函数。

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

我试图将参数作为任何对象传递 当实际上这是此函数返回的块时。所以这段代码对我有用

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

其中对象只是返回的元素的 firs 时间声明名称。打印函数显示返回的对象是一个 CCAnimationManager,因此当您必须运行 Action 然后将 action.delegate 分配给 self 然后实际捕获回调时,它等于以前的语法。希望这些信息对某人有所帮助。

最新更新