creator1.4版的rc2的bug

1.4版的rc2,spin调用setEndListener动画播完回调没调用,之前用1.3.2是正常的。

example-case 中 spine 的测试例有使用 setEndListener 接口,回调是能被触发的(点击【停止】按钮,console 窗口会输出 end 事件的 log)。

在 1.4 版本中更新了 spine runtime 的版本。也有可能新版本的 spine runtime 调整了 end 事件回调的时机。

应该是有问题 播放A动作 设了endListenerA 然后 播放B 设endListenerB,endListenerB没等动画播完 直接被 调用

确认肯定 是有这个问题,太蛋疼了 ,,快修改掉吧。影响面太大

能不能提供一个简单的代码 demo?我调试看看。

你按照我说的方法输出一下endlistener的调用时间 很容易重现

还有一个会闪退的bug

这里没有判断空指针的引用

我运行了 spine runtime 里面的 example。发现效果是一样的。看起来,3.5 版本的 spine runtime 已经更新了事件机制。有新增事件,而且原有事件的调用时机都有变化:
http://zh.esotericsoftware.com/spine-api-reference#AnimationStateListener

我在升级 spine runtime 的时候,为了保证和之前 Creator 版本的兼容性,对 event 回调做了一些封装。现在看起来只能通过破坏回调的兼容性才能保证功能完善了。我们内部会再讨论一下怎么来调整,并尽快完成。

谢谢反馈!

这个是什么情况下会遇到呢?看了下代码,很多地方都没有对参数为空进行容错。可能要 @pandamicro 来看一下了。

因为endListener的调用 有问题我只能通过其他方式,我把findAnimation这个函数修改引擎 导出到我可以调用来获取动画duration,但findAnimation在查找一个不存在的动画时 会闪退。

fiindAnimation 这个接口可以官方导出一下 觉得蛮有必要

这里确实有必要,有空指针的可能性,不过我们会修改绑定代码,保障空指针不会传入到这类转换函数中

修复 PR 在此

https://github.com/cocos-creator/bindings-generator/pull/8

我看到现在 findAnimation 这个接口就已经有绑定了啊。

我的意思是导出到sp.Skeleton的接口中

呃…我看了下,这个接口之前在 web 上没有实现。我会在 web 上实现一下,然后添加到组件中。谢谢反馈!

1.4.0rc3版本中,在进入新场景的时候给spine设置了个setEndListener,将spine组件的enabled设置成false后,再设置成true并执行新动画时,在之前添加的setEndListener监听就不再起作用了,请问什么时候能修复这个问题呢?

这个问题可能会在 1.4 的小版本中修复。谢谢反馈!

请问 现在有什么临时解决方案啊 项目中着急使用

如果只是想在动画的结束的时候接受到事件回调的话 this.modeObj.setCompleteListener(this.spineComplete.bind(this))

用这个setCompleteListener 即可 我也遇到了setEndListener的问题
希望能有所帮助

cocos 1.5.2 在使用setEndListener接口的时候惊奇的发现spine动画还没结束就已经监听到了动画结束事件,不知官方何时解决