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,插件,创建,并,控制,多个,动作,的

制作U盘系统盘?简单步骤助你快速掌握!

简介:制作U盘系统盘是一项非常实用的技巧,不仅可以用于系统的重新安装,还能用于系统故障时的修复。

在这篇文章中,我们将详细介绍如何制作一个U盘系统盘,并为您呈现简单的操作步骤,帮助您快速掌握这一技能。

工具原料:系统版本:Windows 10 21H2品牌型号:联想ThinkPad X1 Carbon Gen 10软件版本:Rufus 3.22此外,您还需要一个至少8GB容量的U盘。

一、准备工作1、下载所需软件和系统镜像。

首先,您需要从微软官网下载Windows 10的ISO镜像文件,并下载Rufus。

Rufus是一款免费且功能强大的U盘制作工具,支持自动下载最新的Windows ISO镜像。

2、备份U盘中的重要数据。

制作系统盘的过程中会格式化U盘上的所有数据,因此请务必提前备份U盘中所有的重要文件,确保数据安全。

二、开始制作U盘系统盘1、插入U盘,并启动Rufus。

打开Rufus后,它会自动检测插入的U盘。

请选择相应的U盘设备。

如果系统镜像未自动选择,请手动点击“选择”按钮,选择下载好的ISO文件。

2、设置引导选项。

在“引导类型”中确保选择了“磁盘或ISO镜像”。

在“映像选项”上,选择“标准Windows安装”。

3、选择分区方案。

如果您的电脑是较新的机型,使用UEFI启动,那么请选择GPT分区方案;如果您的电脑旧一些,并使用传统的BIOS启动,则选择MBR分区方案。

4、文件系统格式选择。

通常情况下,文件系统格式会自动设置为FAT32。

无需更改,保持默认即可。

5、点击“开始”。

确认所有设置无误后,点击“开始”按钮。

Rufus会警告您U盘中的数据将会被删除,确认无误后继续。

制作过程大约需要几分钟,耐心等待即可。

三、使用制作完成的U盘系统盘1、验证U盘系统盘的有效性。

制作完成后,为确保系统盘能够正常启动,您可以重新启动电脑并设置从U盘启动,检查是否可以进入Windows安装界面。

2、维护和修复功能。

U盘系统盘不仅可以用于系统的安装,也可以用于修复一些系统引导问题。

在系统无法启动时,通过U盘启动进入“疑难解答”模块,您可以选择“修复计算机”来执行系统还原或修复启动问题。

拓展知识:1、为什么选择Rufus?Rufus不仅是一个轻量级的U盘启动盘制作工具,它还提供了与多种操作系统兼容的功能,同时不需要复杂的安装过程,使用简便。

Rufus在处理ISO文件时,速度也相对较快,特别是对于制作Windows系统启动盘,它有着很好的兼容性和稳定性。

2、UEFI与MBR的选择。

UEFI和MBR是两种不同的启动模式,选择哪一种取决于您的硬件。

UEFI支持较新硬件,并能够提供更快的启动时间和更多的功能,而MBR传统模式通常在老旧系统下使用。

总结:通过本教程,您已经学习到如何制作一个U盘系统盘,并将其用于Windows 10的安装和故障修复。

制作U盘系统盘并不困难,只需按照步骤完成准备、设置和制作即可。

掌握这一技能能在不同情况下帮助您解决不少问题,保证您的电脑系统随时处于健康状态。

制作U盘启动?简单步步骤教你轻松搞定!

简介:U盘启动盘是一种让U盘变成可启动存储设备的方式,通过它我们可以重装系统、修复故障、甚至进行系统恢复等操作。

特别是对于喜欢自己动手解决计算机问题的用户来说,制作一个U盘启动盘是一个非常实用的技能。

本篇文章将为您详细介绍如何制作U盘启动盘,让您的动手能力更上一层楼。

工具原料:系统版本:Windows 11 最新版(截至2023年)品牌型号:Dell XPS 13 9310软件版本:Rufus 3.22一、准备工作1、选择合适的U盘。

有些操作系统需要较大的U盘空间,因此建议使用8GB以上容量的U盘。

此外,为了保证U盘的稳定性和寿命,建议选择知名品牌的U盘。

2、备份U盘中的重要数据。

由于制作启动盘的过程将会格式化U盘,这意味着所有存在的数据都会被清空。

二、下载必要软件1、访问Rufus官网并下载最新版本的Rufus软件。

Rufus是一款便捷的启动盘制作工具,支持多种系统文件格式且操作简单。

2、获取操作系统的镜像文件(ISO)。

您可以从Windows官网或其他合法软件源下载相应的操作系统版本。

确保下载到的是原版镜像,以免影响后续的安装和使用。

三、制作U盘启动盘1、将U盘插入电脑USB接口,确保电脑可以识别到您的U盘。

2、打开Rufus软件,通常无需安装,直接运行即可。

在软件的设备选项中确认选择正确的U盘,以免误格式化其他硬盘。

3、在“引导类型”中选择“磁盘或ISO映像”,然后选择您之前下载的系统镜像文件。

4、在“分区类型”中选择适合您的系统类型(MBR适用于老旧BIOS,GPT适用于新型UEFI),通常现有电脑多为UEFI,选择GPT即可。

5、格式与文件系统一般选择默认的FAT32,这样可以保证兼容性。

6、检查无误后,点击“开始”。

请注意,启动制作过程会清空U盘数据,请再次确认备份工作已经完成。

7、等待过程结束。

当提示“完成”时,即代表U盘启动盘制作成功,您可以利用该U盘进行系统安装或修复等操作。

拓展知识:1、UEFI与BIOS的区别:UEFI是BIOS的现代替代者,提供了图形化的界面,支持更大的硬盘和常规的鼠标操作,而传统BIOS则相对朴素,适合较旧的系统。

2、Rufus的优势:相较于其他启动盘制作工具,Rufus不仅支持多种系统镜像文件,还能根据用户需求进行个性化设置,如持久化存储(Live USB)、反复使用等。

3、快速引导与安全启动:许多现代电脑支持快速引导和安全启动功能,这些功能可以提升引导速度和安全性,但也可能导致U盘启动失败,需要在BIOS设置中暂时关闭该功能。

总结:通过以上的步骤,我们轻松完成了U盘启动盘的制作。

不仅掌握了如何使用Rufus来创建启动盘,也了解了UEFI和BIOS的基础知识。

无论是系统故障解决,还是多系统安装,U盘启动盘都是一项极具实用性的工具。

在现代的数码生活中,掌握这些技能不仅能够增强动手能力,也能为我们带来更多的便利与安全感。

加入收藏
               

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

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录