cocos2dx 3.0 lua 使用spine骨骼动画

7 篇文章 0 订阅
2 篇文章 0 订阅

以下使用spine的时候,spine动画是使用studio导出的,在studio中导出格式设置为JSON,导出目录任选,勾选Create Atlas,点击导出 ,然后把它放在了我的工程里面进行的操作

为了不用在每次使用spine的时候都写一堆的重复代码,我把它的写在了公用的方法里面,方便调用

直接上代码

-- 创建动画 参数1:.json文件路径  参数2:.atlas文件路径 参数3:父节点 参数4:位置 参数5:缩放
function Actions.createSpine(fileJosn,fileAtlas,parent,pos,_scale)
    -- print("-----Actions.createSpine-------")
    local onegift_spine = Actions.createSketelon(fileJosn,fileAtlas) -- 传两个参数动画名称默认为1
    Actions.play(onegift_spine,"1",true) -- 第四个参数不传默认为从0帧开始
    parent:addChild(onegift_spine)
    onegift_spine:setPosition(pos)
    onegift_spine:setScale(_scale)
end
-- 播放动画  参数1:动画对象 参数2:动画名称 参数3:是否循坏 参数4:从第几帧开始播放
function Actions.play(_obj,name,loop,trackIndex)
    -- print("-----Actions.play-------")
    loop = loop or false
    trackIndex = trackIndex or 0
    _obj:setAnimation(trackIndex,name,loop)
    _obj:update(0.01)--why: 如果不主动更新一下,spine动画需要等到下一帧才能看到,出现黑屏现象--
end
-- 创建spine动画  参数1:.json文件路径  参数2:.atlas文件路径 参数3:动画名称
function Actions.createSketelon(pathJson,pathAtlas,timeScale)
    -- print("-----Actions.createSketelon-------")
    local full_path=cc.FileUtils:getInstance():fullPathForFilename(pathJson)--spine找不到json文件报错--
    if not full_path or full_path=="" then return end
    -- 创建spine动画
    local spine_animation = sp.SkeletonAnimation:create(full_path,pathAtlas,timeScale or 1) -- 第三个为动画名称
    local spineTable = {}
    Actions.LoadAni(spine_animation,spineTable)
    return spine_animation
end

-- 加载动画
function Actions.LoadAni(src_table,target_table)
    -- print("-----Actions.LoadAni-------")
    if src_table == nil then return nil end
    target_table = target_table and target_table or {}
    for key,value in pairs(target_table) do  
          if type(value)~="table" or  key=="__index" then
             src_table[key]=value
          else
             src_table[key]=Actions.LoadAni({},value)
          end
    end
    return src_table
end

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值