flash游戏开发中的人物走动实现方法

由于AS3的推出和网速的提高~~ 用Flash来实现网络游戏已经成为可能.. 今天来讨论一下一般RPG中常见的人物走动的实现方法.. 一般的人物走动..都是由一组连续的动作组成... 像下面的图片: [img]/uploads/allimg/090211/0841040.png[/img] 实际操作过程有两种~~一种是把图片分割成很多的小块 另一种是用mask只显示需要的区域~然后用移动图片的方式来处理.. 我们先说说第一种方法.. 拿上面的图片为例 一、把资源图片通过任何方式加载进swf并生成bitmap对象 二、根据单个动作的宽度和高度生成单独的bitmapData对象的数组 三、通用Timer或EntarFrame等方式循环显示每个动作 //Copyright © 2008. Http://L4cd.Net All Rights Reserved.    package   {        import flash.display.Bitmap;        import flash.display.BitmapData;        import flash.display.Sprite;        import flash.events.TimerEvent;        import flash.geom.Matrix;        import flash.geom.Rectangle;        import flash.utils.Timer;                [SWF(width="80", height="91", backgroundColor="#ffffff", frameRate="24")]        public class Run extends Sprite       {            [Embed(source="0002.png")]            private var Png002:Class;            private var m:Bitmap;            private var w:Number = 80;//单动作宽度            private var h:Number = 91;//单动作高度            private var c:Number = 8;//动作数            private var bmp:Array;            public function Run()            {                m = new Png002() as Bitmap;                bmp = [];                for(var i:uint=0;i             {                    var bit:BitmapData = new BitmapData(80,91);                    var mx:Matrix = new Matrix();                    mx.tx = -i*w;                    bit.draw(m,mx,null,null,new Rectangle(0,0,w,h));                    bmp.push(bit);                }                m.bitmapData = null               addChild(m)                var timer:Timer = new Timer(50);                timer.addEventListener(TimerEvent.TIMER,frame);                timer.start();            }            private function frame(e:TimerEvent):void           {                bmp.push(bmp.shift());                m.bitmapData = bmp[0];            }        }    }   //Copyright © 2008. Http://L4cd.Net All Rights Reserved. package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.TimerEvent; import flash.geom.Matrix; import flash.geom.Rectangle; import flash.utils.Timer; [SWF(width="80", height="91", backgroundColor="#ffffff", frameRate="24")] public class Run extends Sprite { [Embed(source="0002.png")] private var Png002:Class; private var m:Bitmap; private var w:Number = 80;//单动作宽度 private var h:Number = 91;//单动作高度 private var c:Number = 8;//动作数 private var bmp:Array; public function Run() { m = new Png002() as Bitmap; bmp = []; for(var i:uint=0;i 上面的代码运行结果如下   本文转自:http://www.5uflash.com/flashjiaocheng/Flashaschengxu/4806.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值