根据creator的龙骨组件来看的话添加一个龙骨的话需要设置五个地方,分别是DragonAsset(龙骨的配置json文件),DragonAtlas(龙骨的纹理json资源),Armature(Armature名称),Animation(Animation名称),playTimes(动画的循环次数)。
如果只是播放一个单一的龙骨的话直接把资源拖到相应的位置,设置一下动画然后就ok了,但是需要切换不同的龙骨的资源的时候要咋办?按照我的经验来说的话有如下三点可以解决:

  1. 制作成预制资源,在需要的时候加载不同的预制体。
  2. 事先把每个需要用到的龙骨附加到不同的节点,然后根据需要哪个龙骨进行显示跟隐藏。
  3. 动态加载龙骨,利用一个DragonBones组件,当需要不同的龙骨资源的时候动态加载龙骨资源并附到组件上面。

分析上面三点的话,肯定是3最省事省心,1跟2的话没有什么难点,无非就是控制好加载哪个预制体,控制哪个节点的显示。接下来就说说如何实现动态加载龙骨。

动态加载龙骨的思路:利用loader加载需要用到的龙骨资源,然后把需要用到的资源赋值给龙骨组件,设置好各项的参数。
代码如下

    /*** 动态加载龙骨* @param animationDisplay  龙骨组件* @param path              龙骨地址* @param armatureName      Armature名称* @param newAnimation      Animation名称* @param completeCallback  动画播放完毕的回调* @param playTimes         播放次数 -1是根据龙骨文件 0五险循环 >0是播放次数*/loadDragonBones(animationDisplay, path, armatureName, newAnimation, completeCallback, playTimes = 1) {  //动态加载龙骨cc.loader.loadResDir(path, function(err, assets){if(err || assets.length <= 0)  return;assets.forEach(asset => {if(asset instanceof dragonBones.DragonBonesAsset){animationDisplay.dragonAsset = asset;}if(asset instanceof dragonBones.DragonBonesAtlasAsset){animationDisplay.dragonAtlasAsset  = asset;}});animationDisplay.armatureName = armatureName;animationDisplay.playAnimation(newAnimation, playTimes);animationDisplay.addEventListener(dragonBones.EventObject.COMPLETE, completeCallback);})}

在实现的过程中遇到的几个坑记录一下,一个是armatureName跟Animation一定要一起设置,设置一个的话是不起作用的。用animationDisplay.playTimes = 1的方式设置播放次数也是不起作用,必须要在playAnimation方法里面设置才生效。

cocos creator动态加载DragonBones相关推荐

  1. Cocos Creator 资源加载流程剖析【二】——Download部分

    Download流程的处理由Downloader这个pipe负责(downloader.js),Downloader提供了各种资源的"下载"方式--即如何获取文件内容,有从网络获取 ...

  2. Cocos Creator 3.x 动态加载 龙骨动画

    龙骨动画比序列帧 优点好太多了,  CocosCreator 提供了很好的支持: 我们就用 龙骨软件自带的动画做一个demo 给大家介绍下:  1. 第一步 肯定是导出资源 我这边是按照目录进度的加载 ...

  3. CocosCreator-精灵动态加载图片资源,实例化精灵

    CocosCreator-3.0-精灵动态加载图片资源,实例化精灵 var spriteFrameEnemyBigGlobal:SpriteFrame; // 精灵框架敌人大号全局变量 onLoad( ...

  4. Cocos Creator - 动态合图(dynamicAtlasManager)

    步骤 Cocos Creator - 动态合图(dynamicAtlasManager) 前言 启用.禁用动态合图 贴图限制 支持定制的渲染组件 调试 总结 Cocos Creator - 动态合图( ...

  5. 动态加载子节点_微信小游戏开发之场景切换和常驻节点传递数据

    主题 场景切换 场景间数据传递方式 小游戏全局背景音效 特别说明 CocosCreator微信小游戏开发系列文章,是我在逐步开发过程中,基于官方文档之上,记录一些重点内容,以及对官方文档中有些知识点的 ...

  6. CocosCreator开发笔记(21)-cc.Sprite的动态加载和释放

    cc.Sprite是Creator中比较常用的一个组件,实际使用中常常需要做动态/异步加载.要让它显示图片,实际上主要是设置SpriteFrame. let path = 'resources/tes ...

  7. 破解猫眼动态加载的票房数据

    破解猫眼电影网动态加载的票房.观看人数数据 **一.先交代下前事** 二.具体的分析 一.先交代下前事 先交代下背景,这次我们要爬的网站是猫眼,尽管猫眼电影网是一个静态网页,没有Ajax动态加载那些七 ...

  8. CocosCreator 动态加载与远程加载资源汇总

    CocosCreator 动态加载与远程加载资源汇总 概述 所有需要通过 cc.loader.loadRes 动态加载的资源,都必须放置在 resources 文件夹或它的子文件夹下.如果一份资源仅仅 ...

  9. js 动态加载select触发事件

    动态加载select后,手动调用一下 subjectChange函数,模拟触发change事件 function hallidChange(value) {$.ajax({type: "po ...

最新文章

  1. RecyclerView 判断滑动到顶部和底部
  2. idea工具使用总结
  3. python开发好学吗-python软件开发好学吗
  4. 一道经典的SQL面试题
  5. mysql的事务操作
  6. 剑灵系统推荐加点_剑灵重制修炼系统 无定式加点打造自我风格
  7. 调整linux块大小,Linux系统之更改默认块大小
  8. 字符串string 、byte[]、MemoryStream、Base64String的相互转换
  9. mvvm绑定checkbox wpf_LoxodonFramework 数据双向绑定 通过控制数据流向防止更新死循环...
  10. 搜索引擎分词:Nutch整合Paoding中文分词步骤详解
  11. thinkphp 常用SQL执行语句总结
  12. 绘制自己的人际关系图_绘制自己的人际关系网
  13. files函数提取文件名HTML,Excel小技巧之轻松提取文件夹中的文件名
  14. 用hyperf框架开发JsonRpc服务
  15. 计算机右键管理 该文件夹,文件右键菜单管理方法介绍【图文详解】
  16. 异地监控组网实战案例(速度快)
  17. 基于STM32G431嵌入式学习笔记——一、LED模块入门
  18. 海思3559平台搭建:简单烧写说明
  19. 刷脸支付人工智能和商业领域进一步融合
  20. ue4 GetPhysicsLinearVelocity 为空

热门文章

  1. 一位台湾学校校长的演讲
  2. JAVA服务器端发送邮件问题:Could not connect to SMTP host: smtp.qq.com, port: 465
  3. JAVA泛型实例化代码
  4. leetcode day 2 【1905. 统计子岛屿】 BFS/DFS
  5. 创新案例分享 | 医院DRG系统建设项目,助力精细化分析医疗数据
  6. 计算机优化英语课堂教学,巧用平板,让课堂不平凡———平板电脑在小学中年级段英语课堂教学中的应用...
  7. 基于watermark.js给图片添加水印
  8. java来源_java的来源
  9. 【软考】【系统架构设计师】2021上午真题及答案
  10. macbook air重量 macbook air配置