cocos creator动态加载DragonBones
根据creator的龙骨组件来看的话添加一个龙骨的话需要设置五个地方,分别是DragonAsset(龙骨的配置json文件),DragonAtlas(龙骨的纹理json资源),Armature(Armature名称),Animation(Animation名称),playTimes(动画的循环次数)。
如果只是播放一个单一的龙骨的话直接把资源拖到相应的位置,设置一下动画然后就ok了,但是需要切换不同的龙骨的资源的时候要咋办?按照我的经验来说的话有如下三点可以解决:
- 制作成预制资源,在需要的时候加载不同的预制体。
- 事先把每个需要用到的龙骨附加到不同的节点,然后根据需要哪个龙骨进行显示跟隐藏。
- 动态加载龙骨,利用一个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相关推荐
- Cocos Creator 资源加载流程剖析【二】——Download部分
Download流程的处理由Downloader这个pipe负责(downloader.js),Downloader提供了各种资源的"下载"方式--即如何获取文件内容,有从网络获取 ...
- Cocos Creator 3.x 动态加载 龙骨动画
龙骨动画比序列帧 优点好太多了, CocosCreator 提供了很好的支持: 我们就用 龙骨软件自带的动画做一个demo 给大家介绍下: 1. 第一步 肯定是导出资源 我这边是按照目录进度的加载 ...
- CocosCreator-精灵动态加载图片资源,实例化精灵
CocosCreator-3.0-精灵动态加载图片资源,实例化精灵 var spriteFrameEnemyBigGlobal:SpriteFrame; // 精灵框架敌人大号全局变量 onLoad( ...
- Cocos Creator - 动态合图(dynamicAtlasManager)
步骤 Cocos Creator - 动态合图(dynamicAtlasManager) 前言 启用.禁用动态合图 贴图限制 支持定制的渲染组件 调试 总结 Cocos Creator - 动态合图( ...
- 动态加载子节点_微信小游戏开发之场景切换和常驻节点传递数据
主题 场景切换 场景间数据传递方式 小游戏全局背景音效 特别说明 CocosCreator微信小游戏开发系列文章,是我在逐步开发过程中,基于官方文档之上,记录一些重点内容,以及对官方文档中有些知识点的 ...
- CocosCreator开发笔记(21)-cc.Sprite的动态加载和释放
cc.Sprite是Creator中比较常用的一个组件,实际使用中常常需要做动态/异步加载.要让它显示图片,实际上主要是设置SpriteFrame. let path = 'resources/tes ...
- 破解猫眼动态加载的票房数据
破解猫眼电影网动态加载的票房.观看人数数据 **一.先交代下前事** 二.具体的分析 一.先交代下前事 先交代下背景,这次我们要爬的网站是猫眼,尽管猫眼电影网是一个静态网页,没有Ajax动态加载那些七 ...
- CocosCreator 动态加载与远程加载资源汇总
CocosCreator 动态加载与远程加载资源汇总 概述 所有需要通过 cc.loader.loadRes 动态加载的资源,都必须放置在 resources 文件夹或它的子文件夹下.如果一份资源仅仅 ...
- js 动态加载select触发事件
动态加载select后,手动调用一下 subjectChange函数,模拟触发change事件 function hallidChange(value) {$.ajax({type: "po ...
最新文章
- RecyclerView 判断滑动到顶部和底部
- idea工具使用总结
- python开发好学吗-python软件开发好学吗
- 一道经典的SQL面试题
- mysql的事务操作
- 剑灵系统推荐加点_剑灵重制修炼系统 无定式加点打造自我风格
- 调整linux块大小,Linux系统之更改默认块大小
- 字符串string 、byte[]、MemoryStream、Base64String的相互转换
- mvvm绑定checkbox wpf_LoxodonFramework 数据双向绑定 通过控制数据流向防止更新死循环...
- 搜索引擎分词:Nutch整合Paoding中文分词步骤详解
- thinkphp 常用SQL执行语句总结
- 绘制自己的人际关系图_绘制自己的人际关系网
- files函数提取文件名HTML,Excel小技巧之轻松提取文件夹中的文件名
- 用hyperf框架开发JsonRpc服务
- 计算机右键管理 该文件夹,文件右键菜单管理方法介绍【图文详解】
- 异地监控组网实战案例(速度快)
- 基于STM32G431嵌入式学习笔记——一、LED模块入门
- 海思3559平台搭建:简单烧写说明
- 刷脸支付人工智能和商业领域进一步融合
- ue4 GetPhysicsLinearVelocity 为空
热门文章
- 一位台湾学校校长的演讲
- JAVA服务器端发送邮件问题:Could not connect to SMTP host: smtp.qq.com, port: 465
- JAVA泛型实例化代码
- leetcode day 2 【1905. 统计子岛屿】 BFS/DFS
- 创新案例分享 | 医院DRG系统建设项目,助力精细化分析医疗数据
- 计算机优化英语课堂教学,巧用平板,让课堂不平凡———平板电脑在小学中年级段英语课堂教学中的应用...
- 基于watermark.js给图片添加水印
- java来源_java的来源
- 【软考】【系统架构设计师】2021上午真题及答案
- macbook air重量 macbook air配置