我正在创建自己的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