• 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
  • 相关阅读:
    C++的继承和多态的理解
    [CentOS]CentOS 7下通过mount cifs挂载smb资源
    IDEA2023版本创建Sping项目无法使用Java8
    Linux IO模式以及select、poll、epoll详解
    IOS手机和车机互联自动化测试
    Redis系列2:数据持久化提高可用性
    Inno Setup 选择安装路径的问题
    *算法训练(leetcode)第二十五天 | 134. 加油站、135. 分发糖果、860. 柠檬水找零、406. 根据身高重建队列
    DCGAN-论文阅读笔记
    解决 vite 4 开发环境和生产环境打包后空白、配置axios跨域、nginx代理本地后端接口问题
  • 原文地址:https://blog.csdn.net/loveryunz/article/details/136389257