Показать сообщение отдельно
Старый 31.01.2011, 12:25
SONce вне форума Посмотреть профиль Отправить личное сообщение для SONce Найти все сообщения от SONce
  № 19  
Ответить с цитированием
SONce

Регистрация: Nov 2009
Сообщений: 124
кароче сделаем проще

Universe:
Код AS3:
package 
{
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.display.MovieClip;
	import flash.display.Stage;
	import Tiler;
	public class Universe extends MovieClip
	{
		public var maploader:URLLoader = new URLLoader();
		public var mapurl;
		public var map:XML;
		public var WORLD_X = 175;
		public var WORLD_Y = 75;
		public var TILE_H;
		public var TILE_W;
 
		public function Universe(url)
		{
			mapurl = url;
			addEventListener(Event.ADDED_TO_STAGE, init);
			maploader.addEventListener(Event.COMPLETE, init_map);
		}
		public function init(e:Event):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			//загружаем XML с картой
			maploader.load(new URLRequest(mapurl));
 
		}
		public function init_map(e:Event)
		{
			map = new XML(e.target.data);
			TILE_H = map.options.tile_h;
			TILE_W = map.options.tile_w;
			for (var gridY = 0; gridY < map.options.map_h; gridY++)
			{
				for (var gridX = 0; gridX <map.options.map_w; gridX++)
				{
 
					var tileID:Tiler = new Tiler(gridX,gridY);
					tileID.walkable = true;
 
 
					addChild(tileID);
 
					var stageX = WORLD_X - gridY * 0.5 * TILE_W + gridX * 0.5 * TILE_W;
					var stageY = WORLD_Y + gridY * 0.5 * TILE_H + gridX * 0.5 * TILE_H;
 
					tileID.x = stageX;
					tileID.y = stageY;
				}
			}
		}
	}
 
}
Tiler:
Код AS3:
package 
{
 
	import flash.display.MovieClip;
	import tile;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Tiler extends MovieClip
	{
		public var corY;
		public var corX;
 
		//важности
		public var walkable:Boolean;
 
		public function Tiler(gridX,gridY)
		{
			corY=gridY;
			corX=gridX;
			this.name = 'x'+gridX+'y'+gridY;
			addEventListener(Event.ADDED_TO_STAGE,init);
		}
 
		public function init(e:Event)
		{
			var mc:MovieClip = new tile();
			this.addChild(mc);
			addEventListener(MouseEvent.MOUSE_OVER,over);
		}
		public function over(e:MouseEvent)
		{
			trace(this.name);
		}
 
	}
 
}
Ну и злощастный плеер
Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.display.Stage;
	import flash.display.Scene;
	import flash.display.DisplayObject;
 
	import Universe;
	import Tiler;
	public class Player extends MovieClip
	{
 
		public function Player()
		{
			addEventListener(Event.ADDED_TO_STAGE,init);
		}
 
		public function init(e:Event)
		{
			var mc:MovieClip = new player();
//как же тут получить координаты тайла???
 
		}
	}
 
}
в кадре
Код AS3:
var maper:Universe = new Universe("map.xml");
addChild(maper);
var pl:Player= new Player();
addChild(pl);