`

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

阅读更多
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;
                        }                        
                        
                }
        }
}
分享到:
评论

相关推荐

    DerictX人物行走(8个方向行走)

    DirectX人物行走(8个方向行走)是一种在游戏开发中常用的技术,主要应用于2D或2.5D的游戏场景中,让角色能够根据玩家输入在八个基本方向(上、下、左、右以及四个对角线方向)进行移动。这个技术涉及到DirectX库中的...

    2D游戏素材中人物的4方位行走图

    在2D游戏中,人物行走动画通常包括上、下、左、右四个基本方向,以满足角色在游戏世界中的基本移动需求。这些4方位行走图由一系列连续的静态图像组成,通过快速切换这些图片,形成流畅的角色动态效果。这种动画技术...

    一个Flash游戏人物行走源码和素材

    3. **8个方向**:游戏人物行走通常包含多个方向,以满足游戏中的全方位移动需求。这8个方向可能包括上、下、左、右以及四个对角线方向。 4. **分割位图**:位图是图像的一种表示形式,由像素数组组成。在Flash中,...

    win32人物行走

    在这个名为“win32人物行走”的项目中,我们将探讨如何在Visual Studio 2005环境下利用Win32 API实现一个简单的游戏场景,特别是角色的移动和地图绘制。 首先,让我们了解VS2005,这是一个由Microsoft开发的集成...

    四面人物行走素材

    这个压缩包包含的是一系列四面的人物行走动画帧,用于创建角色在四个主要方向(上、下、左、右)行走的动作效果。这种素材对于那些需要自定义角色动画的开发者来说非常有用,可以节省大量绘制和动画制作的时间。 ...

    as3.0 人物行走源码

    4. **实现运动逻辑**:根据用户输入(如键盘方向键),改变人物的行走方向,并更新动画帧。可能需要用到`Sprite`的`x`和`y`属性来控制位置变化。 5. **碰撞检测**:为了防止人物穿过障碍物,需要实现碰撞检测算法,...

    页游之角色驱动.rar

    2. **行走动画**:在时间轴上,为角色创建行走动画,每一帧代表角色行走过程中的一个步骤。可以使用符号(Symbol)来创建可重用的行走循环,然后根据角色的方向(左、右、上、下)调整动画播放的方向。 3. **键盘...

    模仿2d游戏人物移动效果

    GDI提供了位图操作函数,如`CreateBitmap`用于创建位图对象,`SelectObject`用于选择要绘制的图像,以及`BitBlt`用于将位图从一个设备上下文复制到另一个设备上下文。 2. **坐标系统**: 2D游戏中的坐标系统通常是...

    一个人物走动程序的源代码和涉及到的素材

    这个压缩包包含的是一个关于人物走动程序的完整资源,非常适合编程初学者学习和实践。在深入探讨之前,我们先来了解一下这些文件的基本构成。 标题中的"一个人物走动程序的源代码"指的是一个能够控制游戏或应用中...

    zhanguo.rar_win32

    "人物行走"是指游戏中角色的移动动画,通常由一系列连续的帧组成,模拟人物在屏幕上的移动。这种动画设计要求考虑帧速率、动作流畅度和方向变化等因素,以确保游戏内的角色看起来自然且符合物理规律。 "怪物的全套...

    女神异闻录动作png序列帧(2D游戏素材)

    "女神异闻录动作png序列帧(2D游戏素材)"这个资源包提供了一套完整的人物动作序列帧,专为2D游戏设计。下面将详细阐述这种素材在游戏开发中的作用、重要性以及如何有效利用它们。 首先,我们要理解什么是png序列帧...

    ren-wu-yi-dong.rar_HGE引擎_Vs2008 H_hge_小游戏_楚留香

    本文将深入探讨如何使用HGE(HGE - Hardware accelerated Game Engine)游戏引擎与Visual Studio 2008开发环境,来实现一个以楚留香为主角的简单人物行走功能的小游戏。HGE是一款强大的2D游戏开发框架,它提供了丰富...

Global site tag (gtag.js) - Google Analytics