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

罗斯切尔德家族是在什么样的历史背景下创建的 罗斯切尔德家族简介

罗斯切尔德家族(Rothschild family),地球上最为神秘的古老家族,是欧洲乃至世界久负盛名的金融家族。

一个隐藏在这个世界阴暗面的控制者控制了这个星球近两个世纪经济命脉的强大家族。

或许对绝大多数普通人来说它是陌生的,因为在大众传媒时代,人们的目光或许只会关注到类似“洛克菲勒家族”或者“摩根家族”这些身名显赫的名字上。

而二十世纪二战前的美国,曾经有一句经典的话形容当时美国的情况“民主党是属于摩根家族的,而共和党是属于洛克菲勒家族的……”其实在这句话后面还应该跟一句“而洛克菲勒和摩根,都曾经是属于罗斯切尔德的。

” 其创始人是梅耶·A·鲍尔(Mayer Amschel Bauer)。

他和他的5个儿子即“五虎”先后在法兰克福、伦敦、巴黎、维也纳、那不勒斯等欧洲著名城市开设银行。

建立了当时世界上最大的金融王国。

鼎盛时期,他们的力量使欧洲的王公贵族也。

时至今日,世界的主要黄金市场也是由他们所控制。

其第四代居伊·罗斯柴尔德,是世界著名的银行家,他的经历与家族的命运一起跌宕起伏。

历史背景 四次战争 第一时期:西欧金融财团在历史中第一次展露头角是在法国大革命前后。

法国大革命中逃到英国的法国贵族中,包括印刷发行法郎纸币和法国国债的主要负责人和设计者。

为了对革命政府和督政府报复,也为了解决己方经济上的窘迫,他们开始大量印刷虚假法郎纸币和法国国债到法国套购物资,这一经济过程持续了了大约15年,给法国经济和社会秩序沉重的打击。

拿上台后,为了反向打击英国,也雇佣了大量剪刀手伪造假英镑纸币,先令银币,并且成功的迫使英国放弃了金本位数年之久。

这一系列前所未有的金融战行为产生了巨额利润和前所未有的混乱。

从中也就催生出第一代金融门阀罗斯柴尔德家族,洛克菲勒家族,杜邦家族和梅隆家族。

迫于战争和国内混乱而严重依赖于国债发行的英国,也就把自己的金融主导权拱手送给通过制造流通虚假有价证券而积蓄巨量财富的罗斯柴尔德家族。

洛克菲勒家族,杜邦家族和梅隆家族则把大部分财富转移到新生国家美国,选择在那个新大陆的国家继续发展。

第二时期:不断巩固旧大陆金融支配性控制权的罗斯切尔德家族不甘心有独立于他们之外的西方国度存在。

于是他们通过扶植摩根财团发展壮大来牵制影响美国,并且力图全面控制美国。

当时的洛克菲勒家族,杜邦家族和梅隆家族没有实力对抗过分强大的罗斯柴尔德家族,于是采用了妥协的方法。

花旗,摩根,美国第一第二国民银行当时都处于罗斯柴尔德家族的间接控制下,罗斯柴尔德家族达到了他的第一次顶峰。

但是,由于过分抽调资金控制新大陆,导致了罗斯柴尔德家族在旧大陆的控制力急速下降。

首相抓住了这个天赐良机,通过赔款组建了德意志银行,并且通过工业化和一系列的并购,迅速组建了新的容克财团:德意志4大银行团。

欧洲崛起了新的金融集团。

第三时期:资本主义的原始生产过剩和需求不足导致了一战的爆发。

洛克菲勒家族,杜邦家族,摩根家族和梅隆家族抓住罗斯柴尔德家族的影响力由于战争而下降的机会,在美国发起了反攻,力图摆脱受到控制的命运。

这个企图在一战结束的时候似乎是成功了,美国摆脱了长期债务。

但是随着战后罗斯柴尔德家族的反攻,美国4大家族发现自己的力量还是无法对抗罗斯柴尔德家族。

容克财团在大战中损失惨重,德意志4大银行组成的德意志财团也屈服于罗斯柴尔德家族的意志。

罗斯柴尔德家族达到了自己的第二次顶峰,也是最高峰:控制全球金融命脉。

第四时期:当发现完全无法和罗斯柴尔德家族在金融领域对抗后,德意志财团和美国财团想到了新的主意:毁灭罗斯柴尔德家族的本体:犹太人。

通过支持和二战,罗斯柴尔德家族几乎到了崩溃的边缘。

大量家族成员被杀害,资产被侵吞,超过2/3的旗下金融机构完全不存在了。

美国财团利用这一有利时机反过来吞并罗斯柴尔德家族在美国和澳洲,加拿大的近乎全部资产,建立了花旗财团,摩根财团,美洲三大财团的现代格局。

容克财团在战争中也失去了绝大多数成员,成功的转化成新的寡头势力,并且利用瑞士5大银行转移战争中掠夺的财富逃过了2战失败的损失,在战后成为欧洲第一大金融寡头财团。

罗斯柴尔德家族在欧洲大陆和北美澳洲的全部金融机构和资产全军复没,靠在英国和瑞士幸存的少量金融机构艰难恢复,并在战后逐步恢复元气。

犹太复国 犹太复国主义运动是罗斯柴尔德家族贡献最大。

罗斯柴尔德家族在法国的成员爱德蒙男爵(1845-1934年)20世纪初向巴勒斯坦的早期犹太移民提供了约600万美元的资金,帮助移民们购买土地和生产设备,定居生存。

伦敦的沃尔特(1868-1937年)曾任英国犹太复国主义主席。

正是他,与犹太复国主义领导人魏兹曼一起,在第一次世界大战期间在英国积极活动,终于使英国政府以外交大臣贝尔福致沃尔特·罗斯柴尔德勋爵一封信的形式,发表了著名的《贝尔福宣言》,最后导致了以色列国的建立。

随机文章为什么阿拉巴马州有一座纪念碑纪念美国历史上最具破坏性的害虫黑化版的白雪公主,联合王子让生母穿烧红铁鞋跳舞致死近期太平洋火山地震连发,两天发生两次地震一次火山爆发(活跃期)外星人为美国工作,奥巴马承认外星人存在/外星人就在人类身边中国古代四大发明对世界的影响,推动全球人类文明发展(西方崛起)

XP系统中创建ADSL宽带连接操作步骤(图文)

想重装系统不会怎么办?菜科网一键重装系统轻松在线帮您搞定系统重装问题。

软件支持 在线重装、U盘制作、自定义重装 等多种模式。

我们知道,不管XP系统还是其他系统中,创建宽带连接是非常重要的事情,要不然后果真的很严重。

相信,不少用户都是通过ADSL上网的,那么,在XP系统中如何创建ADSL来进行宽带连接呢?针对这问题,现在,小编就来和大家细说XP系统创建ADSL宽带连接的具体操作步骤。

具体如下: 方法一:点 开始 菜单,点击 程序 ,找到 附件 - 通讯 --新建连接向导。

方法二:右击桌面的网络邻居(如果没有到控制面板中找),选择属性,创建一个新的链接。

方法三:下载 中国电信宽带上网助手(解决Adsl不会上网的问题) 自动创建, 1、点下一步。

2、连接到Internet,点下一步。

3、选择手动设置我的连接,点一步。

4、选择用要求用户名和密码的宽带连接。

5、输入ISP名,这里可以随意输入,比如:宽带连接或ADSL。

6、输入上网帐号(用户名)和密码(密码和确认密码是一样的)。

7、正在完成,记得选上 在我的桌面添加一个到此链接的快捷方式 ,点完成。

8、回到桌面,多了一个宽带连接。

这样就完成了。

XP系统中创建ADSL宽带连接的详细操作步骤就介绍到这了,步骤有点多,有需要的用户耐心按照上面的方法来操作吧。

如果大家还有其他疑问欢迎关注菜科网官网。

注意:本站所刊载的文章均为学习交流之用,请勿用于商业用途。

对于商业使用,请联系各自版权所有者,否则法律问题自行承担。

Win7系统升级指南:全面解析升级步骤与要点 Win7系统损坏修复教程:详细步骤助你快速解决问题 XP系统中创建ADSL宽带连接操作步骤(图文) 分类于: 回答于:2015-12-31 我们知道,不管XP系统还是其他系统中,创建宽带连接是非常重要的事情,要不然后果真的很严重。

相信,不少用户都是通过ADSL上网的,那么,在XP系统中如何创建ADSL来进行宽带连接呢?针对这问题,现在,小编就来和大家细说XP系统创建ADSL宽带连接的具体操作步骤。

具体如下: 方法一:点 开始 菜单,点击 程序 ,找到 附件 - 通讯 --新建连接向导。

方法二:右击桌面的网络邻居(如果没有到控制面板中找),选择属性,创建一个新的链接。

方法三:下载 中国电信宽带上网助手(解决Adsl不会上网的问题) 自动创建, 1、点下一步。

2、连接到Internet,点下一步。

3、选择手动设置我的连接,点一步。

4、选择用要求用户名和密码的宽带连接。

5、输入ISP名,这里可以随意输入,比如:宽带连接或ADSL。

6、输入上网帐号(用户名)和密码(密码和确认密码是一样的)。

7、正在完成,记得选上 在我的桌面添加一个到此链接的快捷方式 ,点完成。

8、回到桌面,多了一个宽带连接。

这样就完成了。

XP系统中创建ADSL宽带连接的详细操作步骤就介绍到这了,步骤有点多,有需要的用户耐心按照上面的方法来操作吧。

如果大家还有其他疑问欢迎关注菜科网官网。

菜科网系统致力于解决 Windows 系统重装解决方案,提供高效、安全、免费的系统重装服务。

加入收藏
               

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

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录