DragonBones骨骼动画事件系统详解

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: DragonBones骨骼动画事件系统详解

DragonBones 本身并不实现事件派发,动画事件和自定义事件的派发与接收都依赖引擎的事件系统,这样可以使得 DragonBones 的事件融合到所支持的各个引擎的事件系统之中。

在 Egret 中,DragonBones 是依赖 EgretArmatureDisplay 来派发和接收事件的,所以通过对其进行事件监听,就可以收到所有来自骨架的动画事件和自定义事件(更多关于 Egret 的事件知识请参考 Egret 的相关教程和文档)。

dragonBones.EventObject 定义了 DragonBones 中相关的事件类型,同时他也会做为一个事件参数通过 dragonBones.EgretEvent 传递给事件监听器。

代码如下:

let armatureDisplay = factory.buildArmatureDisplay("armatureName");
this.addChild(armatureDisplay);
// Event listener.
function animationEventHandler(event: dragonBones.EgretEvent): void {
let eventObject = event.eventObject;
console.log(eventObject.animationState.name, event.type, eventObject.name ? eventObject.name : "");
}
// Add animation event listener.
armatureDisplay.addEventListener(dragonBones.EventObject.START, animationEventHandler, this);
armatureDisplay.addEventListener(dragonBones.EventObject.LOOP_COMPLETE, animationEventHandler, this);
armatureDisplay.addEventListener(dragonBones.EventObject.COMPLETE, animationEventHandler, this);
armatureDisplay.addEventListener(dragonBones.EventObject.FADE_IN, animationEventHandler, this);
armatureDisplay.addEventListener(dragonBones.EventObject.FADE_IN_COMPLETE, animationEventHandler, this);
armatureDisplay.addEventListener(dragonBones.EventObject.FADE_OUT, animationEventHandler, this);
armatureDisplay.addEventListener(dragonBones.EventObject.FADE_OUT_COMPLETE, animationEventHandler, this);
// Add animation custom event listener.
armatureDisplay.addEventListener(dragonBones.EventObject.FRAME_EVENT, animationEventHandler, this);
// Add animation sound event listener.
factory.soundEventManager.addEventListener(dragonBones.EventObject.SOUND_EVENT, animationEventHandler, this);
  • 自定义事件可以在 DragonBones Pro 中的事件时间轴添加。(视频教程
  • 自定义事件可以配置自定义参数。
  • 声音事件可以通过 factory 的 soundEventManager 实例统一监听,而不必为每个骨架单独监听。

可以访问示例中心查看参考示例的效果和下载源码:

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
JavaScript 前端开发
Three.js 的骨骼动画 SkinnedMesh
【2月更文挑战第16天】
54 2
|
3月前
dragonBones使用Sprite换肤后mesh问题
dragonBones使用Sprite换肤后mesh问题
20 0
|
3月前
dragonBones.CCFactory.getInstance()导致的dragonBones突然不播放
dragonBones.CCFactory.getInstance()导致的dragonBones突然不播放
16 0
|
3月前
|
JavaScript atlas Kotlin
深度解读dragonBones使用SpriteFrame任意换肤的实现
深度解读dragonBones使用SpriteFrame任意换肤的实现
45 0
|
4月前
|
图形学
Unity 事件系统
Unity 事件系统
|
10月前
dragonBones龙骨利用网格实现简单的眨眼效果
dragonBones龙骨利用网格实现简单的眨眼效果
实现场景切换的时候淡入淡出的效果(Unity3D)
在游戏中不可避免的要进行场景切换,如果切换的场景要加载的资源太多太大,那么就要耗时很长时间,这对于用户的体验来说很不舒服,也就是常说的游戏卡了。怎么解决这种尴尬呢。比较推荐的就是异步加载场景,然后中间加一个过渡场景,过渡场景做的美观一些,然后加一个进度条,看起来就不会那么尴尬了。然后在场景过渡的时候,加一个淡入淡出的效果,就很nice了今天就实现一个场景切换的时候淡入淡出的效果。剩下的场景异步加载还有中间过渡场景有时间再写。
|
存储 图形学
动画系统中的基础动画
动画系统中的基础动画
131 0
动画系统中的基础动画
|
物联网 API
ThingJS:仅需不到5行代码,实现炫酷3D动画
在物联网领域,Thing都有哪些动效呢?
|
Windows
第二十七章:自定义渲染器(五)
渲染器和事件(1) 大多数Xamarin.Forms元素都是交互式的。他们通过触发事件来响应用户输入。如果在Xamarin.Forms自定义元素中实现事件,则可能还需要在呈现器中为本机控件触发的相应事件定义事件处理程序。
690 0