Я могу нарисовать свою карту в соответствии с формулой на Drawing Isometric game worlds. Но как я могу найти x-y одной плитки в соответствии с ее положением на слое карты div?Как преобразовать положение x-y в плитку x-y для изометрической плитки?
Для того чтобы быть чистым, мой стиль плитки - 1036px, а верхний стиль - 865px. Согласно тем свойствам css, как можно найти x и y позиции плитки в соответствии с картой?
ширина Плитка 200 и высота 100.
Большое спасибо.
Мой Javascript код так:
this.drawTiles = function(min_x, max_x, min_y, max_y) {
if (min_x < 0) min_x = 0;
if (min_y < 0) min_y = 0;
if (max_x < 0) max_x = thisObj.MAXSIZE;
if (max_y < 0) max_y = thisObj.MAXSIZE;
if (max_x > this.mapSize - 1) max_x = this.mapSize - 1;
if (max_y > this.mapSize - 1) max_y = this.mapSize - 1;
if (min_x < this.mapSize - 1) min_x = max_x - thisObj.MAXSIZE;
if (min_y < this.mapSize - 1) min_y = max_y - thisObj.MAXSIZE;
var appendLayer = thisObj.maplayer;
this.capMapDataObj.getTiles(min_x, max_x, min_y, max_y, function(JSONResp) {
var tiles = JSON.parse(JSONResp);
for (var x=min_x; x<max_x+1; x++) {
for (var y=min_y; y<max_y+1; y++) {
var tile = tiles[x][y];
var xpos = (y * thisObj.tile_width/2) + (x * thisObj.tile_width/2);
var ypos = (x * thisObj.tile_height/2) - (y * thisObj.tile_height/2);
var zin1 = 100 + parseInt(x) + parseInt(y);
var elem = '<div style="position:absolute;top:'+ypos+'px;left:'+xpos+'px;z-index:'+zin1+';width:200px;height:200px;background-image:url(images/'+tile[4]+');background-position:bottom;background-repeat:no-repeat;bottom:0px;text-align:center;" id="'+x+'_'+y+'"><div style="padding-top:140px;">'+x+' - '+y+'</div></div>\n';
if (document.getElementById(x+'_'+y) == undefined)
$(elem).appendTo(appendLayer);
}
}
});
}
Так XPOS и YPos переменные позиции CSS каждого слоя тайлов. Когда я нажимаю слой карты, я хотел бы рассчитать изометрические координаты x-y плитки.
Можете ли вы предоставить дополнительную информацию о том, какой алгоритм вы использовали? Связанный вопрос упоминает несколько. – Appleman1234