`
hgfghw5
  • 浏览: 48388 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
szk
社区版块
存档分类
最新评论

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

阅读更多

由于AS3的推出和网速的提高~~
用Flash来实现网络游戏已经成为可能..
今天来讨论一下一般RPG中常见的人物走动的实现方法..
一般的人物走动..都是由一组连续的动作组成...
像下面的图片:

实际操作过程有两种~~一种是把图片分割成很多的小块
另一种是用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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics