Cocos|Cocos Creator初学者使用龙骨动画
本文档只适于部分初次使用龙骨动画的人,不甚全面。
下面讲使用的两种情况,预设于编辑器和动态加载。
1.直接预设于编辑器中
①直接拖动xxx_ske.json的文件到层级管理器或者场景管理器下,可直接生成一个龙骨组件(需要把xxx_tex.json的文件拖到"Dragon Atlas Asset"栏)
文章图片
image.png ②或者创建节点,添加渲染组件"DragonBones",再把对应文件拖到"Dragon Asset"和"Dragon Atlas Asset"栏
以上①②两种方式添加的组件不必设置"Armature"栏
脚本中的使用方式:
// 脚本组件中的属性
@property(dragonBones.ArmatureDisplay)
dragonBones_xxx: dragonBones.ArmatureDisplay = null;
// 播放动画
let animState: dragonBones.AnimationState = this.dragonBones_xxx.playAnimation("anim", 1);
// 注册监听(需要检测动画播放时使用)
this.dragonBones_xxx.addEventListener(dragonBones.EventObject.COMPLETE, this.OnCallAnimationPlayComplete, this);
// 注销监听(不需要检测动画播放时使用)
this.dragonBones_xxx.removeEventListener(dragonBones.EventObject.COMPLETE, this.OnAnimationPlayComplete, this);
/**
* 龙骨动画回调
*/
private OnAnimationPlayComplete (_event: cc.Event): void {
// 非循环动画播放完成(dragonBones.EventObject.LOOP_COMPLETE时循环动画播放完成一次)
if (_event.type === dragonBones.EventObject.COMPLETE) {
if (this.dragonBones_xxx.animationName === "anim") {
}
}
}
// 暂停播放动画
if (animState != null) {
animState.stop();
}
// 继续播放动画
if (animState != null) {
animState.play();
}
2.动态加载骨骼资源
话不多说上代码:
/**
* 动态加载怪物龙骨
* @param _monsterId
* @param resDir
* @param _callback
* @constructor
*/
public static LoadingDragonBonesData (_resDir: string, _callback: Function) : void {
cc.loader.loadResDir(_resDir, function (error: Error, resource: any[], urls: string[]) {
if (error != null || resource == null) {
console.log("动态加载龙骨出错:");
console.log(error);
_callback(false)
return;
}
console.log("动态加载龙骨完成:");
resource.forEach(function(value: any, index: number, array: any[]) {
if (value instanceof dragonBones.DragonBonesAsset) {
let bones_asset: dragonBones.DragonBonesAsset= value;
}
if (value instanceof dragonBones.DragonBonesAtlasAsset) {
let bones_atlas_asset: dragonBones.DragonBonesAtlasAsset = value;
}
});
_callback(true);
});
}// 使用加载好的龙骨文件
this.dragonBones_xxx.dragonAsset = bones_asset;
this.dragonBones_xxx.dragonAtlasAsset = bones_atlas_asset;
// 一定要设置armatureName
this.dragonBones_xxx.armatureName = "Armature";
// 播放动画(同上)
let animState: dragonBones.AnimationState = this.dragonBones_xxx.playAnimation("anim", 1);
【Cocos|Cocos Creator初学者使用龙骨动画】其他的用法就和上面的一样了
推荐阅读
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- cocosbcx白皮书解读(一)|cocosbcx白皮书解读(一)| 区块链如何统一开发者、发行商、用户之间的利益
- 单片机|单片机初学者做项目为什么这么难(单片机初学者心得有哪些)
- c语言|C语言初期学习遇到的特殊点 【三子棋详解】【初学者福音,详细总结,复习能手】
- 所有Python入门书籍的整理,初学者必看,附赠所有电子版(三)
- 写给DataBinding初学者的入门介绍
- Kubernetes服务(初学者指南)
- Cocos|Cocos Creator 在native平台几率出现图片、Label 白块(变成白色)问题
- 初学者怎样自学好UI设计(学习的步骤是怎样的?)
- cocos2dx下的滑动选择效果