quick3.3 spine setEventListener等事件怎么注册,怎么使用

quick3.3 spine setEventListener等事件怎么注册,怎么使用,能给个例子么,谢谢

我使用如下用法,直接导致runtime崩溃

self.body = sp.SkeletonAnimation:create(“animation/guaiwu/gw.json”, “animation/guaiwu/gw.atlas”, 1.0)
self.body:setAnimation(0, “dengdai”, true);–播放动画
self:addChild(self.body)

self.body:setEventListener(spineCallBack)–执行到这里直接崩溃

备注:其实就想在动画完成后,执行一些其他逻辑。可是现在没有办法知道动画是否播放完成了。

自己搞定,特来给和我一样被坑的朋友填坑。
找遍各大论坛和文档教程都没有这块的内容,真是个悲剧啊。实在没办法,用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的兄弟们,辛苦了。加油!

— Begin quote from ____

引用第2楼leibi123于2015-01-20 15:00发表的 :
自己搞定,特来给和我一样被坑的朋友填坑。
找遍各大论坛和文档教程都没有这块的内容,真是个悲剧啊。实在没办法,用coco code ide 和VS联调,发现setEventListener只是绑定了下,回调函数暂时并不支持。
后来在lua绑定代码里面发现了另外一个绑定函数 registerSpineEventHandler,没错,就是它是我重获光明。因为我不确定美术到处都Spine
动画是否全部循环播放,我打算注册里面的ANIMATION_EVENT事件,很久很久都发现不会触发回调,我以为这货又是一个空壳子,于是尝试性的注册了一下ANIMATION_COMPLETE
事件,结果瞬间发现回调函数的断点进来了。尼玛,我瞬间就感觉天亮了。好了不废话了。下面上代码
http://www.cocoachina.com/bbs/job.php?action=topost&tid=282400&pid=1225510

— End quote

ANIMATION_EVENT不是空壳子,要在spine里加上events插入关键帧

我加了关键帧 在关键帧处暂停 。 发现 一加速 就跳到了 其他帧 也是醉了

我也发现lua的例子太少,找个键盘事件监听找了半天了,lua-tests里也没有

scene:setKeypadEnabled(true)
scene:addNodeEventListener( cc.KEYPAD_EVENT,function (event)
    if event.code == 6 then

    end
end)

有个方法是把这个动作分成两段
用end那个回调

感谢3楼,原来要加一个关键帧

感觉creator也有你说的这个问题,start,end都不触发回调,只有complete会触发,我也不知道为什么