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

📄 gamehuman.as

📁 actionscript3做的RPG游戏DEMO及AS3源码
💻 AS
字号:
/*
=================================================================================================
人物类,功能分为以下几个方面:
1,函数walking 根据传入的路径数据,到达目的地。
	
=================================================================================================
*/
package com.kamon.Astar{
	import flash.display.Sprite;
	import flash.display.MovieClip;
	import flash.utils.getDefinitionByName;
	import flash.events.Event;
	public class GameHuman extends Sprite {
		private var Human:Class;
		private var human:MovieClip;
		private var walkArray:Array;
		private var changeMapArray:Array;
		private var step:uint;
		private var flag:uint;
		private var nowX:uint;
		private var nowY:uint;
		private var direct:String;
		private var isWalk:Boolean;
		public function GameHuman(nx:uint,ny:uint,id:uint) {
			nowX=nx;
			nowY=ny;
			changeMapArray=MapData.MAP_PASSAGEWAY[id]
			init();
		}
		private function init():void {
			Human=getDefinitionByName("Human")  as  Class;
			human=new Human();
			//human.stop();
			human.gotoAndStop(MapData.DIRECT_ARRAY[changeMapArray[0][3]]+"Stop");
			addChild(human);
		}
		public function walking(evt:WalkEvent):void {
			isWalk=true;
			step=1;
			flag=0;
			walkArray=evt.walkArray;
			addEventListener(Event.ENTER_FRAME,startMove);
		}
		public function get nowXindex():uint {
			return nowX;
		}
		public function get nowYindex():uint {
			return nowY;
		}
		private function startMove(evt:Event):void {
			var dirX:int=walkArray[step][0] - nowX;
			var dirY:int=walkArray[step][1] - nowY;
			this.x+= 3.4 * (dirX - dirY);
			this.y+= 1.7 * (dirX + dirY);
			parent.x-= 3.4 * (dirX - dirY);
			parent.y-= 1.7 * (dirX + dirY);
			if (isWalk) {
				isWalk=false;
				if (dirX==1&&dirY==1) {
					direct="down";
				} else if (dirX==1&&dirY==0) {
					direct="rightDown";
				} else if (dirX==1&&dirY==-1) {
					direct="right";
				} else if (dirX==0&&dirY==-1) {
					direct="rightUp";
				} else if (dirX==-1&&dirY==-1) {
					direct="up";
				} else if (dirX==-1&&dirY==0) {
					direct="leftUp";
				} else if (dirX==-1&&dirY==1) {
					direct="left";
				} else if (dirX==0&&dirY==1) {
					direct="leftDown";
				}
					human.gotoAndPlay(direct);
			}
			flag++;
			if (flag==5) {
				//重新计算深度
				parent.setChildIndex(this,parent.getChildIndex(parent.getChildByName("element" + walkArray[step][0] + "_" + walkArray[step][1])));
			} else if (flag == 10) {
				nowX=walkArray[step][0];
				nowY=walkArray[step][1];
				this.x=34*(nowX-nowY);
				this.y=17*(nowX+nowY);
				step++;
				flag=0;
				isWalk=true;
			}
			if (step == walkArray.length) {
				human.gotoAndStop(direct+"Stop");
				walkEnd();//本次行走结束
				changeMap();//检测是否需要更换地图
				this.removeEventListener(Event.ENTER_FRAME,startMove);
			}
		}
		//========================================================================================
		private function changeMap():void {
			for (var i in changeMapArray) {
				if (nowX==changeMapArray[i][0]&&nowY==changeMapArray[i][1]) {
					var changeMapEvent:ChangeMapEvent=new ChangeMapEvent();
					changeMapEvent.nextMapId=changeMapArray[i][2];
					dispatchEvent(changeMapEvent);
					break;
				}
			}
		}
		private function walkEnd():void{
			 var notClickEvent:NotClickEvent=new NotClickEvent();
			dispatchEvent(notClickEvent);
		}
	}
}

⌨️ 快捷键说明

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