• cocos2d-lua:骨骼动画的使用


    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    补充:对于引擎默认封装,对应的参数可以使用默认值代替

              sp.EventType.ANIMATION_START     =  0 
    		  sp.EventType.ANIMATION_END       =  2
    		  sp.EventType.ANIMATION_COMPLETE  =  3
    		  sp.EventType.ANIMATION_EVENT     =  5
    
    • 1
    • 2
    • 3
    • 4

    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 then
            armature:removeFromParent()
        end
    end)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    linux命令
    终于明白:有了线程,为什么还要有协程?
    视频去LOGO的方法,AI自动完美地去除视频LOGO
    [附源码]Python计算机毕业设计Django小太阳幼儿园学生管理系统
    Apache Tomcat 漏洞复现
    记一次 Visual Studio 2022 卡死分析
    Linux文件权限修改
    C++之make_unique、namespace、class类总结(二百四十二)
    【VSCode】对比两个文件差异
    经典的风控授信流程与增信策略
  • 原文地址:https://blog.csdn.net/loveryunz/article/details/136389257