骨骼动画的使用
- spine骨骼动画的使用
- Armature骨骼动画
spine骨骼动画的使用
-- spine骨骼动画导出的文件为:xxx.atlas,xxx.json,xxx.png 三个文件需同时存在
local spine = sp.SkeletonAnimation:create("xxx.json", "xxx.atlas")
-- 第一个参数为从整个动画的第几帧开始播到最后一帧,第二个参数为动画名,第三个参数为是否循环播放
spine:setAnimation(0, "animation", false)
-- 开始播放动画的回调
spine:registerSpineEventHandler(function (event)--对应逻辑事件
end, sp.EventType.ANIMATION_START)
-- 播放动画结束的回调
spine:registerSpineEventHandler(function (event)--对应逻辑事件delayDoSomething(function()spine:removeFromParent()end, 1 / 60.0) -- 延时一帧移除
end, sp.EventType.ANIMATION_END)
-- 播放动画完成的回调
spine:registerSpineEventHandler(function (event)--对应逻辑事件
end, sp.EventType.ANIMATION_COMPLETE)
-- 播放动画事件的回调
spine:registerSpineEventHandler(function (event)--对应逻辑事件
end, sp.EventType.ANIMATION_EVENT)local size = parent:getContentSize()
sprite:setPosition(cc.p(size.width/2, size.height/2))
parent:addChild(spine)
补充:对于引擎默认封装,对应的参数可以使用默认值代替
sp.EventType.ANIMATION_START = 0 sp.EventType.ANIMATION_END = 2sp.EventType.ANIMATION_COMPLETE = 3sp.EventType.ANIMATION_EVENT = 5
Armature骨骼动画
-- Armature骨骼动画导出的文件为:xxx.ExportJson,xxx.plist,xxx.png
local armatureDataManager = ccs.ArmatureDataManager:getInstance()
armatureDataManager:addArmatureFileInfo("xxx.png", "xxx.plist", "xxx.ExportJson")
local armature = ccs.Armature:create("xxx")
armature:setPosition(cc.p(0, 0))
parent:addChild(armature)
-- 第一个参数是动画名称,第二个参数是事件间隔,第三个参数是是否循环(具体实现查看CCArmatureAnimation.cpp)
-- armature:getAnimation():play("Animation1", -1, 0)
-- 第一个参数是动画下标,第二个参数是事件间隔,第三个参数是是否循环
armature:getAnimation():playWithIndex(0, -1, 0)
--设置回调
armature:getAnimation():setMovementEventCallFunc(function (armature, movementType, movementID)-- print(armature, movementType, movementID)if movementType == ccs.MovementEventType.complete thenarmature:removeFromParent()end
end)