⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamesprite.as

📁 一个FLASH写的人物行走自动寻路
💻 AS
字号:
package {
	/*
	oliwen
	*/
	import flash.display.*;
	import flash.net.*;
	import flash.utils.Timer;
	import flash.events.*;
	import flash.geom.*;
	import flash.text.TextField;
	import Load;

	public class GameSprite extends Load {
		private var timer:Timer;
		private var sWidth:uint;
		private var sHeight:uint;
		private var sStep:uint;
		private var sDirection:uint;
		private var m_PersonRun:Array;
		private var pointer:uint;
		private var PersonBit:Bitmap;
		private var m_RowNum:uint;
		private var m_RankNum:uint;
		private var m_ActNum:uint = 0;
		private var sn:Boolean=false;
		private var m_personSprite:Sprite = new Sprite();
		private var m_personName:TextField = new TextField;

		function GameSprite() {
			//图片加载对象;
			url_="a1.png";
			super();
			StartRun();
		}
		public function StartRun():void {
			m_personName.text = "人物";
			m_personName.x=15;
			m_personName.y=-20;
			this.addChild(m_personName);
			this.addChild(m_personSprite);

			//行 列动作个数
			m_RowNum=7;
			m_RankNum=6;

			//角色移动方向; 
			sDirection=0;
			//角色步数; 
			sStep=1;
			//角色动作数组; 
			m_PersonRun=new Array  ;
			//初始化角色动作运行指针; 
			pointer=1;
			//初始化time; 
			timer=new Timer(1);//初使用图片出现的时间
			timer.addEventListener(TimerEvent.TIMER,timerHandler);
			this.addEventListener(listened, completeHandler);
		}
		//键盘事件,通过方向键更改角色移动方向; 
		private function keyDownHandler(event:KeyboardEvent):void
		{
		//m_ActNum 横排第几个动作  sDirection 竖派第几个动作
		//按数字键测试
		switch (event.keyCode)
		{
		case 97 :
		trace("1");
		timer.start()
		sDirection=0;
		sn=true;
		m_personSprite.scaleX = 1;
		m_personSprite.x = 1;
		break;
		case 98 :
		trace("2");
		timer.start()
		sDirection=1;
		sn=true;
		m_personSprite.scaleX = 1;
		m_personSprite.x = 0;
		break;
		case 99 :
		trace("3");
		timer.start()
		sDirection=2;
		sn=true;
		m_personSprite.scaleX = 1;
		m_personSprite.x = 0;
		break;
		case 100 :
		trace("4");
		timer.start()
		sDirection=3;
		sn=true;
		m_personSprite.scaleX = 1;
		m_personSprite.x = 0;
		break;
		case 101 :
		trace("5");
		timer.start()
		sDirection=4;
		sn=true;
		m_personSprite.scaleX = 1;
		m_personSprite.x = 0;
		break;
		case 102 :
		trace("6");
		timer.start()
		sDirection=3;
		m_personSprite.scaleX = -1;
		m_personSprite.x = m_personSprite.width;
		sn=true
		break;
		case 103 :
		trace("7");
		timer.start()
		sDirection=2;
		m_personSprite.scaleX = -1;
		m_personSprite.x = m_personSprite.width;
		sn=true;
		break;
		case 104 :
		trace("8");
		timer.start()
		sDirection=1;
		m_personSprite.scaleX = -1;
		m_personSprite.x = m_personSprite.width;
		sn=true;
		break;
		case 105 :
		trace("9");
		timer.start()
		m_ActNum =1;
		sDirection=5;
		sn=false;
		break;
		case 120 :
		trace("10");
		sn=false;
		break;
		}
		
		}
		//定时器运行事件; 
		private function timerHandler(event:Event):void {
			//删除旧的角色动作图像; 
			if (PersonBit != null) {
				m_personSprite.removeChild(PersonBit);
			}
			//显示新的角色动作图像; 
			if (sn==false) {
				PersonBit=new Bitmap(m_PersonRun[sDirection][m_ActNum]);
				timer.stop();
			} else {
				PersonBit=new Bitmap(m_PersonRun[sDirection][pointer]);

			}
			//加载到场景
			m_personSprite.addChild(PersonBit);
			//键盘侦听
			m_personSprite.stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);

			//角色动作循环处理; 
			if (pointer < sStep - 1) {
				pointer++;
			} else {
				pointer=2;
			}
		}
		//加载图片完成处理事件; 
		private function completeHandler(event:Event):void {
			//根据图片的大小初始化BitmapData; 
			//注意如果你要保留原来的图片的透明度的话,必将transparent设置为true,同时设置填充色值的前两位为00; 
			sWidth=loader.width / m_RowNum;
			sHeight=loader.height / m_RankNum;

			var sBmd:BitmapData=new BitmapData(loader.width,loader.height,true,0x00FFFFFF);
			sBmd.draw(loader);

			//计算移动步数; 
			sStep = m_RowNum;
			for (var j:uint=0; j < Math.floor(loader.height / sHeight); j++) {
				var arr:Array=new Array;
				for (var i:uint=0; i < sStep; i++) {
					var bmd:BitmapData=new BitmapData(sWidth,sHeight,true,0x00FFFFFF);
					//获取单个角色的BitmapData对象; 
					bmd.copyPixels(sBmd,new Rectangle(sWidth * i,sHeight * j,sWidth,sHeight),new Point(0,0));
					arr.push(bmd);
				}
				//放入角色数组里; 
				m_PersonRun.push(arr);
			}
			//释放sBmd资源; 
			sBmd.dispose();
			//开始运行角色动作; 
			timer.start();
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -