DragonBones插件创建并控制多个动作的骨骼动画

作者:小菜 更新时间:2025-02-27 点击数:
简介:接下来你将了解到运用DragonBones创建包含多个动作的骨骼动画,并在程序中通过键盘交互控制动作。

打开文件DragonBones_Tutorial_Mult

【菜科解读】

接下来你将了解到运用DragonBones创建包含多个动作的骨骼动画,并在程序中通过键盘交互控制动作。

打开文件DragonBones_Tutorial_MultiBehavior.fla,双击库里的动画元件Dragon,你可以看到此动画中有四个动作:stand,walk,jump和fail。

每个动作的起始帧上添加了对应的帧标签,这也是DragonBones识别不同动作的标识。

打开骨骼动画编辑面板,你会看到在Behavior List里面会有多个动作,选择某个动作就可以为对应动作设置动画帧数、缓动,设置此动作的某个骨骼的细节参数等。

请留意Behavior编辑里的Blending Times选项。

这个选项是表明的其他动作切换到当前动作需要的过渡时间。

例如这里设置的跳跃动作的Blending Times为0.13,那么其他动作切换到跳跃需要0.13秒,DragonBones框架会自动为你添加其中的过渡帧,让各种动作之间切换变得自然。

当然,你可以在动画预览窗口中看到各种动画的切换效果。

Dragon Bones插件 v2.3 官方最新版:http://www.cr173.com/soft/68403.html

调整完毕各个动作的细节后,点击“Export”按钮导出骨骼动画数据。

打开DBStarlingMultiBehavior.as文件,代码如下。

此示例是在Starling框架中通过键盘控制骨骼动画运动。

package{import dragonBones.Armature;import dragonBones.animation.WorldClock;import dragonBones.factorys.StarlingFactory;import flash.ui.Keyboard;import starling.display.Sprite;import starling.events.EnterFrameEvent;import starling.events.KeyboardEvent;import starling.text.TextField;import flash.events.Event;public class DBStarlingMultiBehavior extends Sprite{[Embed(source = "../assets/Dragon2.png", mimeType = "application/octet-stream")]public static const ResourcesData:Class;private var factory:StarlingFactory;private var armature:Armature;private var armatureClip:Sprite;private var isLeft:Boolean;private var isRight:Boolean;private var isJumping:Boolean;private var moveDir:int=0;private var speedX:Number = 0;private var speedY:Number = 0;private var textField:TextFieldpublic function DBStarlingMultiBehavior(){factory = new StarlingFactory();factory.addEventListener(Event.COMPLETE, textureCompleteHandler);factory.parseData(new ResourcesData());}private function textureCompleteHandler(e:Event):void{armature = factory.buildArmature("Dragon");armatureClip = armature.display as Sprite;armatureClip.x = 400;armatureClip.y = 550;addChild(armatureClip);WorldClock.clock.add(armature);updateBehavior()addEventListener(EnterFrameEvent.ENTER_FRAME, onEnterFrameHandler);stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyEventHandler);stage.addEventListener(KeyboardEvent.KEY_UP, onKeyEventHandler);textField=new TextField(400,30,"A-move left,D-move right,W-jump","Verdana",16,0,true)textField.x=60;textField.y=2;addChild(textField);}private function onKeyEventHandler(e:KeyboardEvent):void{switch (e.keyCode){case Keyboard.A :case Keyboard.LEFT :isLeft=e.type == KeyboardEvent.KEY_DOWN;break;case Keyboard.D :case Keyboard.RIGHT :isRight=e.type == KeyboardEvent.KEY_DOWN;break;case Keyboard.W :case Keyboard.UP :jump();break;}var dir:int;if (isLeft && isRight) {dir=moveDir;return;}else if (isLeft){dir=-1;}else if (isRight){dir=1;}else{dir=0;}if(dir==moveDir){return;}else{moveDir=dir;}updateBehavior()}private function onEnterFrameHandler(_e:EnterFrameEvent):void{updateMove();WorldClock.clock.advanceTime(-1);}private function updateBehavior():void{if (isJumping){return;}if (moveDir == 0){speedX = 0;armature.animation.gotoAndPlay("stand");}else{speedX=6*moveDir;armatureClip.scaleX = -moveDir;armature.animation.gotoAndPlay("walk");}}private function updateMove():void{if (speedX != 0) {armatureClip.x += speedX;if (armatureClip.x 800) {armatureClip.x = 800;}}if (isJumping){if (speedY 0 ) {armature.animation.gotoAndPlay("fall");}speedY += 1;}if (speedY != 0) {armatureClip.y += speedY;if (armatureClip.y > 540) {armatureClip.y = 550;isJumping = false;speedY = 0;updateBehavior();}}}private function jump():void{if (isJumping) {return;}speedY = -25;isJumping = true;armature.animation.gotoAndPlay("jump");}}}

通过上面的代码我们可以发现,我们只需要在程序中需要播放相关骨骼动画的时候调用函数armature.animation.gotoAndPlay()即可。

除了指定需要播放的动作名称,你还可以通过此函数来动态指定动作的总帧数、是否循环等。

对于每个动画,除了指定其播放之外,DragonBones框架提供了动画播放相关的各种事件。

动作切换事件:

armature.addEventListener(dragonbones.events.Event.MOVEMENT_CHANGE, aramtureEventHandler);

动作开始事件:

armature.addEventListener(dragonbones.events.Event.START, aramtureEventHandler);

动作结束事件

armature.addEventListener(dragonbones.events.Event.COMPLETE, aramtureEventHandler);

动作循环完毕事件:

armature.addEventListener(dragonbones.events.Event.LOOP_COMPLETE, aramtureEventHandler);

通过各种事件与动作的配合,你可以轻松创建具有复杂运动角色的游戏。

控制骨骼框架中的每根骨头

对于一个有趣的游戏,仅仅播放预先设置的骨骼动画或许不够,我们需要角色具有动态可控的各自动作。

令人高兴的是DragonBones提供了访问并控制骨骼框架里每根骨头的方法,让你的角色在游戏中随意运动。

此示例通过鼠标在场景中的移动来控制骨骼。

我们创建了一个跟随鼠标运动的小鸟,小龙人会与小鸟保持一定距离,同时小龙人的头和胳膊会跟随小鸟运动而做出不同姿势,非常有趣。

打开DBStarlingControlBone.as,代码如下。

package{import dragonBones.Armature;import dragonBones.Bone;import dragonBones.animation.WorldClock;import dragonBones.factorys.StarlingFactory;import flash.geom.Point;import flash.ui.Mouse;import starling.display.Image;import starling.display.Sprite;import starling.events.EnterFrameEvent;import starling.events.TouchEvent;import starling.textures.Texture;import flash.events.Event;public class DBStarlingControlBone extends Sprite{[Embed(source = "../assets/Dragon2.png", mimeType = "application/octet-stream")]public static const ResourcesData:Class;[Embed(source = "../assets/starling.png")]private static const starlingImg:Class;private var factory:StarlingFactory;private var armature:Armature;private var armatureClip:Sprite;private var mouseX:Number = 0;private var mouseY:Number = 0;private var moveDir:int=0;private var dist:Number;private var speedX:Number = 0;private var starlingBird:Image;private var _r:Number;private var _head:Bone;private var _armR:Bone;private var _armL:Bone;public function DBStarlingControlBone(){factory = new StarlingFactory();factory.addEventListener(Event.COMPLETE, textureCompleteHandler);factory.parseData(new ResourcesData());}private function textureCompleteHandler(e:Event):void{armature = factory.buildArmature("Dragon");armatureClip = armature.display as Sprite;armatureClip.x = 400;armatureClip.y = 550;addChild(armatureClip);WorldClock.clock.add(armature);updateBehavior(0)addEventListener(EnterFrameEvent.ENTER_FRAME, onEnterFrameHandler);stage.addEventListener(TouchEvent.TOUCH, onMouseMoveHandler);starlingBird=new Image(Texture.fromBitmap(new starlingImg()))addChild(starlingBird);Mouse.hide();//get the bones which you want to control_head = armature.getBone("head");_armR = armature.getBone("armUpperR");_armL = armature.getBone("armUpperL");}private function onEnterFrameHandler(_e:EnterFrameEvent):void{checkDist();updateMove();updateBones();WorldClock.clock.advanceTime(-1);}private function checkDist():void{dist = armatureClip.x-mouseX;if(dist190){updateBehavior(-1)}else{updateBehavior(0)}}private function onMouseMoveHandler(_e:TouchEvent):void{var _p:Point = _e.getTouch(stage).getLocation(stage);mouseX = _p.x;mouseY = _p.y;starlingBird.x=mouseX-73;starlingBird.y=mouseY-73;}private function updateBehavior(dir:int):void{if(moveDir==dir)return;moveDir=dir;if (moveDir == 0){speedX = 0;armature.animation.gotoAndPlay("stand");}else{speedX=6*moveDir;armature.animation.gotoAndPlay("walk");}}private function updateMove():void{if (speedX != 0) {armatureClip.x += speedX;if (armatureClip.x 800) {armatureClip.x = 800;}}}private function updateBones():void{//update the bones' pos or rotation_r = Math.PI + Math.atan2(mouseY - armatureClip.y+armatureClip.height/2, mouseX - armatureClip.x);if (_r > Math.PI){_r -= Math.PI * 2;}_head.node.rotation = _r*0.3_armR.node.rotation = _r *0.8;_armL.node.rotation = _r * 1.5;starlingBird.rotation=_r*0.2;}}}

从上面代码我们可以看到,通过方法dragonBones.Armature.getBone(_name:String):Bone来获取某个骨骼。

骨骼中的node对象包含了此骨骼的位置坐标,旋转弧度,拉伸比例,倾斜数据等等。

我们根据游戏逻辑的需要对骨骼的这些参数赋数,即可实现动态控制此骨骼的效果。

在上面示例中,请留意updateBones()函数里,我们先获取到当前鼠标位置与骨骼框架中心点的夹角,然后根据这个角度,来改变小龙人的头部和胳膊的旋转弧度,从而实现了这个有趣的效果。

DragonBones,插件,创建,并,控制,多个,动作,的

简单快捷的系统盘制作指南:小白也能轻松上手

简介:在如今这个数字化时代,拥有一个干净快捷的系统盘是提升工作效率和娱乐体验的重要手段之一。

然而,对于许多消费者而言,系统盘的制作看似复杂而遥不可及。

实际上,通过简单的操作和正确的工具,小白用户也能轻松上手,打造出高效的系统盘。

本指南将带您走过整个制作过程,确保每一步都能被理解和执行。

工具原料:系统版本:Windows 11 或 macOS Ventura品牌型号:Microsoft Surface Laptop 5, MacBook Air M2软件版本:Rufus 3.21(Windows),Disk Drill 5(Mac)一、初步准备:选择与获取工具1、选择合适的工具:在创建系统盘之前,确保您拥有正确的工具。

对于Windows用户,Rufus 是一款优秀的免费开源软件,适用于大部分的系统镜像写入需求。

Mac用户则可以使用Disk Drill,不仅可以帮助管理硬盘,还能高效助您创建启动盘。

2、获取系统镜像:下载所需的操作系统镜像文件(ISO)。

请确保您从官方渠道下载,例如Windows系统可以从微软官网获取,而macOS则通过App Store下载。

二、硬件选择与准备1、选择正确的存储设备:使用至少16GB容量的U盘或移动硬盘,以确保充足的存储空间。

此外,选择传输速度较快的USB 3.0或Thunderbolt接口,可以大幅缩短制作时间。

2、备份数据:在进行任何系统盘制作之前,务必将U盘或移动硬盘上的重要数据进行备份,因为制作过程会格式化存储设备。

三、制作系统盘的步骤1、Windows平台(使用Rufus):(1)安装并启动Rufus软件,将您的U盘插入电脑。

(2)选择下载的Windows ISO文件,并设置分区方案为GPT,目标系统为UEFI。

(3)点击“开始”,Rufus将格式化U盘并写入系统文件,所需时间取决于U盘性能。

2、Mac平台(使用Disk Drill):(1)安装并打开Disk Drill,将您的U盘连接到Mac。

(2)选择“创建启动盘”功能,导入Mac OS镜像。

(3)确认目标磁盘并开始制作,Disk Drill将自动处理格式化和系统文件写入过程。

拓展知识:1、UEFI与BIOS:现代计算机大多使用UEFI(统一可扩展固件接口)取代传统BIOS,支持更大容量硬盘与更快的启动速度。

在制作系统盘时,选择正确的分区方案和启动模式至关重要。

2、USB接口的选择:在进行系统盘制作时,选择USB 3.0以上或Thunderbolt接口可以显著提高数据传输效率,从而缩短制作时间。

3、使用虚拟机:如果希望测试新系统而不更改当前系统,可以选择在虚拟机中安装测试,这样不会影响现有的硬件配置。

总结:通过本指南,您应该能了解系统盘制作的基本步骤与选择合适工具的重要性。

无论是在Windows还是Mac平台,只要按照步骤准备并细致操作,任何计算机用户都能轻松完成一次系统盘的制作。

希望这篇文章能够为您提供实用的系统盘制作知识,帮助优化和提升个人设备的性能与安全性。

高效制作系统盘?详解专业方法步骤

简介:系统盘的制作对于任何需要重装操作系统的用户来说都是一项必备技能。

无论你是系统崩溃后需要紧急修复,还是想将操作系统升级到最新版本,一个高效的系统盘可以让整个过程快捷顺利。

本文将详细介绍制作系统盘的专业步骤,并提供相应的实用建议。

工具原料:系统版本:Windows 11和macOS Ventura品牌型号:Dell XPS 13 (2022), Apple MacBook Pro 14-inch (2023)软件版本:Rufus 4.0, Balena Etcher 1.10.0一、如何高效制作Windows系统盘1、准备工作:首先,我们需要一个容量至少为8GB的U盘。

为了保证制作系统盘的完整性,建议选择速度较快的USB 3.0 U盘。

2、下载操作系统镜像:前往微软官方网站下载最新的Windows 11 ISO文件,确保下载的版本和你的设备兼容。

官方网站通常提供下载工具,能够自动检测系统需求并下载相应的镜像文件。

3、使用Rufus制作系统盘:下载并安装Rufus 4.0。

打开软件,插入U盘,选择已下载的Windows 11 ISO文件,默认选择“GPT分区方案”和“UEFI(非CSM)”类型,启动制作,这将大约需要10至15分钟。

二、如何高效制作macOS系统盘1、准备工作:对于Mac用户,需要一个至少16GB的USB-C闪存盘以确保适当的容量。

2、下载macOS安装器:通过Apple App Store,下载macOS Ventura安装程序。

下载完成后,安装程序通常位于“应用程序”文件夹内。

3、使用终端制作系统盘:打开“终端”应用,使用“createinstallmedia”命令行工具,例如:```bashsudo /Applications/Install macOS Ventura.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume```4、完成后,按照提示输入管理员密码,系统将开始制作,稍后会提示完成。

三、常见问题解决方案与建议1、U盘无法启动:确保U盘被设为启动盘,而非其他花哨的存储设备。

此外,检查BIOS设置,保证第一启动项为U盘,关闭安全启动选项。

2、系统文件损坏或不完整:再下载ISO文件或选择完整的下载镜像,确保网络稳定,避免因网络问题导致的文件损坏。

拓展知识:1、安装系统时选择SSD作为安装目标盘,其读取速度明显快于传统机械硬盘,这将大幅缩减系统启动和软件加载时间。

2、使用文件系统时,Windows通常使用NTFS格式,而macOS使用APFS或HFS+。

确保系统盘选择正确的文件系统格式以确保兼容性和性能。

3、制作系统盘后,可以安装常用工具软件比如杀毒软件、文件压缩工具等等在同一U盘,以便后续安装后能迅速达到理想工作环境。

总结:制作系统盘不仅仅是为了解决系统崩溃的问题,它更是打开技术操作和提升设备性能大门的一把钥匙。

借助专业工具和方法,你可以轻松制作出高质量的系统盘,并为随时可能出现的技术挑战做好准备。

掌握这些技巧后,不仅可以提升自身装机水平,还有助于节省大量时间和精力。

加入收藏
               

DragonBones插件创建并控制多个动作的骨骼动画

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录