自己搞定,特来给和我一样被坑的朋友填坑。
找遍各大论坛和文档教程都没有这块的内容,真是个悲剧啊。实在没办法,用coco code ide 和VS联调,发现setEventListener只是绑定了下,回调函数暂时并不支持。
后来在lua绑定代码里面发现了另外一个绑定函数 registerSpineEventHandler,没错,就是它是我重获光明。因为我不确定美术到处都Spine
动画是否全部循环播放,我打算注册里面的ANIMATION_EVENT事件,很久很久都发现不会触发回调,我以为这货又是一个空壳子,于是尝试性的注册了一下ANIMATION_COMPLETE
事件,结果瞬间发现回调函数的断点进来了。尼玛,我瞬间就感觉天亮了。好了不废话了。下面上代码
–动作完成事件 animation=“dengdai” loopCount = 1 trackIndex = 0 type = “complete”
local function spineCallBack(event)
–print(“event=%s”…event.animation)
if event.animation == “gongji” then
self.Player:setMix(“gongji”, “dengdai”, 0.2) --第二个坑,设置Mix并不会播放动作,只是告诉后面如果从gongji动作往dengdai动作转到时候做一个动作过度,所以设置完后,依然得调用下面这句
self.Player:setAnimation(0, “dengdai”, true)
self.bAttack = false
Global.MainScene:hurt()
end
end
self.Player:registerSpineEventHandler(spineCallBack,sp.EventType.ANIMATION_COMPLETE)
self.Player 为 sp.SkeletonAnimation:create(Global.debugResPath…“animation/DJ(1)/DJ(1).json”, Global.debugResPath…“animation/DJ(1)/DJ(1).atlas”, 1.0)
后面不知道还有啥坑,我是从cocos2dx C++转到quick的,发现一个大问题,文档,例子跟不上,遇到问题不知道去哪里参考,希望官方这方面能加强了,最后开发quick的兄弟们,辛苦了。加油!