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

📄 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(100);
			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 = 0;
					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 + -