swift - Cocos2d,通过回调快速查找Spritebuilder时间轴动画何时完成

标签 swift cocos2d-iphone callback spritebuilder

我在 Spritebuilder 的时间轴上设置了回调。 我触发了时间线动画。我的目标是在动画完成之前禁用触摸。

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

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

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

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

}

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

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

最佳答案

因此,在与 codementor 进行 session 后,我发现我错误地使用了 setCompletedAnimationCallbackBlock 函数。

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

我试图将参数作为 AnyObject 传递 实际上这是该函数返回的一个 block 。 所以这段代码对我有用

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

其中对象只是返回的元素的第一次声明名称。 print 函数显示返回的对象是一个 CCAnimationManager,因此它与之前的语法相同,当您必须 runAction 然后将 action.delegate 分配给 self,然后实际捕获回调时。 希望这些信息对某人有所帮助。

关于swift - Cocos2d,通过回调快速查找Spritebuilder时间轴动画何时完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34869110/

相关文章:

Java:用于表达式解析和评估的库,其标识符事先未知

swift - 按钮混淆了

ios - 如何在不同的 Storyboard 中对导航堆栈中的某些 View Controller 执行推送 segue?

cocos2d-iphone - CCMutableArray 已弃用,如何更改代码

cocos2d-iphone - 在 Cocos2D 游戏中添加网格的最佳且常见的方法是什么

回调函数模型检查点导致keras错误

swift - 将 PFFile 加载并保存到 mongoDB

swift - 在 Swift Mac App 中定义结构

iphone - RPG游戏循环和类结构(适用于iPhone的cocos2D)

c - 将 int 传递给 C 回调