Лучшая идея - сохранить четкую модель ваших плиток и создать отдельный слой вида для ее рендеринга.
Пример:
interface Tile {
function get typeID():String;
}
class Water implements Tile {
public function get typeID():String {
return TYPE;
}
static public const TYPE:String = "water";
}
class Sand implements Tile {
public function get typeID():String {
return TYPE;
}
static public const TYPE:String = "sand";
}
Теперь карта выглядит следующим образом (этоявляется жестко закодированным, но вы также можете сгенерировать его):
var map:Array = [
[new Water, new Sand, new Sand, new Water],
[new Water, new Sand, new Sand, new Water],
[new Water, new Sand, new Sand, new Water],
[new Sand, new Sand, new Water, new Water]
]
И он может быть представлен как:
var colors:Object = { water: 0x0000FF, sand: 0xFFFF00 };
const size:Number = 20;
for (var y:int = 0; y < map.length; y++) {
var row:Array = map[y];
for (var x:int = 0; x < row.length; x++) {
beginFill(colors[Tile(row[x]).typeID]);
drawRect(x * size, y * size, size, size);
}
}
Конечно, это очень упрощено, но должно датьидея.
И если вы хотите проверить, какой тип плитки находится в какой позиции, вы можете просто посмотреть на карту.