在flash中我创建了一个这样的地图数组: var map:Array = [ [ 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7 ], [ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 ], [ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 ], [ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3 ], [ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 3 ], [ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 3 ], [ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 3 ], [ 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 3 ], [ 8, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 9 ] ]; 现在我需要用外部的一张瓦片地图素材来绘制地图,该瓦片地图的宽高为160×480,每个格子宽高为80×80
时间: 2023-09-19 14:05:53 浏览: 22
你可以通过以下步骤来绘制地图:
1. 加载瓦片地图素材,将其分割成80x80的小图片。
2. 创建一个空的Sprite对象,作为地图容器。
3. 使用双重循环遍历map数组,根据每个数组元素的值来选择对应的瓦片小图片,并将其添加到容器中。
4. 根据map数组的值,确定每个瓦片小图片在容器中的位置。
下面是示例代码:
```actionscript
// 加载瓦片地图素材
var tileset:Bitmap = new Tileset();
var tilesetWidth:int = tileset.width;
var tilesetHeight:int = tileset.height;
var tileWidth:int = 80;
var tileHeight:int = 80;
var numCols:int = tilesetWidth / tileWidth;
var numRows:int = tilesetHeight / tileHeight;
// 创建地图容器
var mapContainer:Sprite = new Sprite();
addChild(mapContainer);
// 绘制地图
for (var i:int = 0; i < map.length; i++) {
for (var j:int = 0; j < map[i].length; j++) {
var tileIndex:int = map[i][j];
var tileRow:int = tileIndex / numCols;
var tileCol:int = tileIndex % numCols;
var tile:Bitmap = new Bitmap(new BitmapData(tileWidth, tileHeight));
tile.bitmapData.copyPixels(tileset.bitmapData, new Rectangle(tileCol * tileWidth, tileRow * tileHeight, tileWidth, tileHeight), new Point());
tile.x = j * tileWidth;
tile.y = i * tileHeight;
mapContainer.addChild(tile);
}
}
```
其中,Tileset是一个外部瓦片地图素材的类名,可以根据你的实际情况进行修改。