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

[url]http://bbs.9ria.com/viewthread.php?tid=72702&extra=page%3D1%26amp;orderby%3Ddateline%26amp;filter%3D86400[/url]

内附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;
}

}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值