
Код AS3:
package
{
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
/**
* ...
* @author Isfet
*/
public class Main extends Sprite
{
[Embed(source = '../imgs/0000.png')] private var Tile0000 :Class;
[Embed(source = '../imgs/0001.png')] private var Tile0001 :Class;
[Embed(source = '../imgs/0010.png')] private var Tile0010 :Class;
[Embed(source = '../imgs/0011.png')] private var Tile0011 :Class;
[Embed(source = '../imgs/0100.png')] private var Tile0100 :Class;
[Embed(source = '../imgs/0101.png')] private var Tile0101 :Class;
[Embed(source = '../imgs/0110.png')] private var Tile0110 :Class;
[Embed(source = '../imgs/0111.png')] private var Tile0111 :Class;
[Embed(source = '../imgs/1000.png')] private var Tile1000 :Class;
[Embed(source = '../imgs/1001.png')] private var Tile1001 :Class;
[Embed(source = '../imgs/1010.png')] private var Tile1010 :Class;
[Embed(source = '../imgs/1011.png')] private var Tile1011 :Class;
[Embed(source = '../imgs/1100.png')] private var Tile1100 :Class;
[Embed(source = '../imgs/1101.png')] private var Tile1101 :Class;
[Embed(source = '../imgs/1110.png')] private var Tile1110 :Class;
[Embed(source = '../imgs/1111.png')] private var Tile1111 :Class;
public static const TILE_SIZE:uint = 60;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var grid:Array = [
[0, 1, 1, 0, 0, 0, 1, 1, 0],
[1, 1, 0, 1, 1, 1, 0, 1, 1],
[1, 1, 0, 0, 0, 1, 0, 1, 1],
[1, 1, 0, 0, 0, 1, 0, 1, 1],
[1, 0, 1, 1, 1, 1, 1, 0, 1],
[1, 1, 1, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 0, 0, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1],
[0, 1, 0, 1, 1, 1, 0, 1, 0]
];
gridParsing(grid);
}
private function gridParsing(grid:Array):void {
var str:String;
var columnLen:uint = grid.length;
var tile:Bitmap;
for (var j:int = 0; j < columnLen; j++)
{
var rowLen:uint = grid[j].length;
for (var i:int = 0; i < rowLen; i++)
{
str = "";
if (grid[j][i]) {
str += grid[j - 1] ? getWall(grid[j - 1][i]) : 1;
str += getWall(grid[j][i + 1]);
str += grid[j + 1] ? getWall(grid[j + 1][i]) : 1;
str += getWall(grid[j][i - 1]);
tile = new this["Tile"+str] ;
tile.x = TILE_SIZE * i;
tile.y = TILE_SIZE * j;
addChild(tile);
}
}
}
}
private function getWall(val:uint):uint {
if (val) {
return 0;
}
else {
return 1;
}
}
}
}
Итого получаем 16 тайлов, и соответственно если класть в массив будет 16 элементов, а не 256 как вы многократно твердили