【问题标题】:Cocos2d, swift find when Spritebuilder timeline animation completed via callbackCocos2d,通过回调快速查找Spritebuilder时间轴动画何时完成
【发布时间】:2016-04-24 11:21:09
【问题描述】:

我在 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 语法有关。会朝那个方向进一步挖掘

【问题讨论】:

    标签: swift cocos2d-iphone callback spritebuilder


    【解决方案1】:

    所以在与 codementor 进行会话后,我发现我不正确地使用了 setCompletedAnimationCallbackBlock 函数。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 2011-09-05
      • 2015-07-26
      • 1970-01-01
      相关资源
      最近更新 更多