кароче сделаем проще
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);