• 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
  • 相关阅读:
    微策生物递交注册:转型推动业绩大幅增长,年复合增长率达170%
    可视化会议网站导读
    Java项目:SSM在线化妆品网站
    MyBatis-Plus学习
    Docker从安装使用到配置各种镜像容器
    多线程学习------07锁的优化及注意事项
    22. SAP ABAP OData 服务的 $count 和 $inlinecount 两个操作的区别
    Leetcode刷题详解——二分查找
    UI框架、css预处理与vuex状态管理
    33.CSS发光按钮的悬停效果
  • 原文地址:https://blog.csdn.net/loveryunz/article/details/136389257