您的位置:首页 > 编程语言 > Lua

lua 使用 spine 的一些问题

2015-11-13 21:07 435 查看


3.4 lua 使用 spine 的一些问题

分类: cocos2d-x2015-03-10
16:58 2321人阅读 评论(4) 收藏 举报

一、基本使用:

[plain] view
plaincopy





self.skeletonNode = sp.SkeletonAnimation:create("sptest/spineboy.json", "sptest/spineboy.atlas", 0.3)

self.skeletonNode:setAnimation(0, "walk", true)

self.skeletonNode:setMix("walk", "jump", 0.2)

self.skeletonNode:setMix("jump", "run", 0.2)

self.skeletonNode:setAnimation(0, "walk", false)

self.skeletonNode:addAnimation(0, "hit", false)

self.skeletonNode:setDebugBonesEnabled(true)

self.skeletonNode:registerSpineEventHandler(function (event)

print(string.format("[spine] %d start: %s", event.trackIndex,event.animation))

end, sp.EventType.ANIMATION_START)

1、一开始,要set一个animation,第一个参数是track(后面细说)。
2、播放其他动画是用add

3、当set的动画播放完毕停止之后(非循环),再add动画是不会动的。

4、mix 就是让2个动画直接的衔接更平滑,最后一个参数是过渡时间

1、回调

正常情况下,都会对一个动画的完结做一些处理。比如我需要的就是,当动作A完成后,播放动作C。基本写法如下:

[plain] view
plaincopy





self.skeletonNode:registerSpineEventHandler(function (event)

if event.animation == "hit" then

print("====== hit end ====")

end

end, sp.EventType.ANIMATION_END)

现在的问题是,我需要skeletonNode才能播放这个动画。怎么才能拿到这个skeletonNode,想当然的以为应该这么写

[plain] view
plaincopy





self.skeletonNode:registerSpineEventHandler(function (event)

if event.animation == "hit" then

self.skeletonNode:setAnimation(0, "hit", false)

end

end, sp.EventType.ANIMATION_END)

试验发现可行,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: