`

[转] 发个简单的八方向行走位图人物

阅读更多
http://bbs.9ria.com/viewthread.php?tid=72702&extra=page%3D1%26amp;orderby%3Ddateline%26amp;filter%3D86400

内附fb4的工程,可以用上下左右来控制人物的走动。
写的不是很好,第一次丢东西上来和大家分享,大家多多拍砖吧。

package
{
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Loader;
        import flash.events.Event;
        import flash.events.EventDispatcher;
        import flash.geom.Point;
        import flash.geom.Rectangle;
        import flash.net.URLRequest;
        
        /**
         * 基础位图人模 
         * @author Administrator
         * 
         */        
        public class BasePeopleModel extends EventDispatcher
        {
                private var l:Loader;
                
                private var bitmapArr:Array;
                private var bitmap:Bitmap;
                public var status:uint;
                private var index:uint;
                
                public var thisbitmapdata:BitmapData;
                //
                private var stand0Arr:Array;
                private var stand2Arr:Array;
                private var walk0Arr:Array;
                private var walk1Arr:Array;
                private var walk2Arr:Array;
                private var walk3Arr:Array;
                private var walk4Arr:Array;
                
                public var locX:uint;
                public var locY:uint;
                
                private var MAX_FRAMES:uint = 8;        //6帧加一帧
                private var frames:uint;        //帧频控制
                
                
                public function BasePeopleModel()
                {
                        l=new Loader();

                        stand0Arr = new  Array();
                        stand2Arr = new  Array();
                        walk0Arr = new  Array();
                        walk1Arr = new  Array();
                        walk2Arr = new  Array();
                        walk3Arr = new  Array();
                        walk4Arr = new  Array();
                        
                }
                
                public function init():void
                {
                        l.contentLoaderInfo.addEventListener(Event.COMPLETE , onHandler);
                        l.load(new URLRequest("../peopleRes.png"));
                }
                
                private function onHandler(e:Event):void
                {
                        var bdd:BitmapData = (l.content as Bitmap).bitmapData;

                        for(var i:int=0;i<6;i++)
                        {
                                var bd:BitmapData = new BitmapData(54,94);
                                bd.copyPixels(bdd,new Rectangle(i*54,0,54,94),new Point(0,0));
                                
                                stand0Arr.push(bd);
                        }
                        for(var i:int=0;i<6;i++)
                        {
                                var bd:BitmapData = new BitmapData(54,94);
                                bd.copyPixels(bdd,new Rectangle(i*54,94,54,94),new Point(0,0));
                                
                                stand2Arr.push(bd);
                        }
                        //
                        for(var i:int=0;i<8;i++)
                        {
                                var bd:BitmapData = new BitmapData(50,98);
                                bd.copyPixels(bdd,new Rectangle(i*50,200,50,98),new Point(0,0));
                                walk0Arr.push(bd);
                                
                                bd = new BitmapData(50,98);
                                bd.copyPixels(bdd,new Rectangle(i*50,300,50,98),new Point(0,0));
                                walk1Arr.push(bd);
                                
                                bd = new BitmapData(50,98);
                                bd.copyPixels(bdd,new Rectangle(i*50,400,50,98),new Point(0,0));
                                walk2Arr.push(bd);
                                
                                bd = new BitmapData(50,98);
                                bd.copyPixels(bdd,new Rectangle(i*50,500,50,98),new Point(0,0));
                                walk3Arr.push(bd);
                                
                                bd = new BitmapData(50,98);
                                bd.copyPixels(bdd,new Rectangle(i*50,600,50,98),new Point(0,0));
                                walk4Arr.push(bd);
                        }
                        
                        dispatchEvent(new Event(Event.COMPLETE));        
                }
                
                public function onUpdate(xx:Number,yy:Number):void
                {
                        locX = uint(xx);
                        locY = uint(yy);
                        
                        frames++;
                        if(frames < MAX_FRAMES)
                        {
                                return;
                        }
                        else
                        {
                                frames = 0;
                        }
                        
                        index ++;
                        if(status <5)
                        {
                                if(index < 8)
                                {
                                        
                                }
                                else
                                {
                                        index = 0;
                                }
                        }
                        else
                        {
                                if(index < 6)
                                {
                                        
                                }
                                else
                                {
                                        index = 0;
                                }
                        }
                        
                        
                        
                        switch(status)
                        {
                                case 0:
                                        thisbitmapdata = walk0Arr[index] as BitmapData;
                                        break;
                                case 1:
                                        thisbitmapdata = walk1Arr[index] as BitmapData;
                                        break;
                                case 2:
                                        thisbitmapdata = walk2Arr[index] as BitmapData;
                                        break;
                                case 3:
                                        thisbitmapdata = walk3Arr[index] as BitmapData;
                                        break;
                                case 4:
                                        thisbitmapdata = walk4Arr[index] as BitmapData;
                                        break;
                                case 5:
                                        thisbitmapdata = stand0Arr[index] as BitmapData;
                                        break;
                                case 6:
                                        thisbitmapdata = stand2Arr[index] as BitmapData;
                                        break;
                        }                        
                        
                }
        }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics