我正在創建自己的CSS地圖。該地圖是5x5,大小爲1000x1000px。將CSS地圖添加到畫布
我想將它添加到一個500x500px的畫布元素,以便只顯示1/2的地圖。我有一個攝像頭功能,將玩家置於畫布中心並相對於玩家移動地圖。
目標:將CSS tilemap的作爲HTML5畫布背景(即使CSS tilemap的比畫布大,應該沒有重疊)
鑑於圖陣列
var mapArray = [
[0, 0, 0, 0 ,0],
[0, 1, 0, 0 ,0],
[0, 0, 0, 0 ,0],
[0, 0, 0, 0 ,0],
[0, 0, 1, 1 ,0]
];
我畫我的地圖是這樣的:
function drawMap() {
for (var i = 0; i < mapArray.length; i++) {
for (var j = 0; j < mapArray[i].length; j++) {
if (parseInt(mapArray[i][j]) == 0) {
$('#mapContainer').append('<div class="grass"></div>');
}
if (parseInt(mapArray[i][j]) == 1) {
$('#mapContainer').append('<div class="dirt"></div>');
}
}
}
}
CSS:我試過將元素直接添加到HTML中,並且使用z-index: -1
可能會將tilemap推送到背景,但這不起作用。
#mapContainer {
height: 1000px;
width: 1000px;
position: relative;
outline: 1px solid black;
z-index: -1;
}
.grass {
height: 200px;
width: 200px;
position: relative;
float: left;
background-color: green;
z-index: -1;
}
.dirt {
height: 200px;
width: 200px;
position: relative;
float: left;
background-color: tan;
z-index: -1;
}
如何將#mapContainer
元素添加到畫布上?我正在使用createJS,所以我嘗試這樣做:
function createWorld() {
world = new createjs.Container();
var htmlElement = document.createElement('div');
htmlElement.id = 'mapContainer';
var domElement = new createjs.DOMElement(htmlElement);
world.addChild(domElement);
stage.addChild(world);
}
有什麼想法?
爲什麼您建議不要使用css並使用拼貼集渲染? – Growler
另外,你從哪裏得到這些瓷磚?你可能會花一些時間通過這個github代碼走過我嗎? (我真的很感謝你與我分享它btw) – Growler
它已經很長時間,因爲我已經看了那個代碼,函數'processmapfile'將png的複合顏色變成紅綠藍成爲sprie-map的tile xy,座標,就像那樣。 – ThorSummoner