2014-05-12 60 views
1

如果我創建了一個虛擬網格32×32的<div>例如:凡在網格中的瓷磚屬於

enter image description here

我想填補瓷磚之一,一個黑盒子on click我到目前爲止這一點:

var _proto = { 
    id:0, 
    x:0, 
    y:0 
} 

var objects = []; 

$(".test").on("mousedown", function(e) { 

    var offset = $(this).offset(); 
    var prex2 = 0, prey2 = 0; 

    prex2 = _proto.x = e.pageX-offset.left; 
    prey2 = _proto.y = e.pageY-offset.top; 
    _proto.id = (_objects.length)?_objects[_objects.length-1].id+1:0; 

    // Add to grid (not sure how to get proper cordinates) 
    $("<div style='display:absolute;width:32px;height:32px;background:black'></div>") 
     .css("top","") 
     .css("left","") 
     .appendTo("#maindiv"); 

}); 

我有座標prex2,並prey2當用戶點擊,但我怎麼知道在哪裏把它放在網格?我確定有一個簡單的數學公式,但我無法弄清楚。

+2

您應該使用模數。讓我從我的一箇舊項目中抓取一個片段,告訴你如何。 – ndugger

回答

1

下面是幾個月前我正在處理的地圖編輯器的一個片段。它可能會幫助你解決你自己的代碼。

mapBlanket.addEventListener("mousedown", function(e) { 
    var sideWidth = document.getElementById("mapSide").offsetWidth; 
    var headHeight = document.getElementById("system").offsetHeight + 32; 
    var clickX = e.pageX - mapBlanket.offsetLeft - sideWidth + mapBlanket.parentNode.scrollLeft; 
    var clickY = e.pageY - mapBlanket.offsetTop - headHeight + mapBlanket.parentNode.scrollTop; 
    var tileX = clickX - (clickX % map.grid); 
    var tileY = clickY - (clickY % map.grid); 
    if (paintOn == 5) { 
     eventThis(tileX, tileY); 
    } else if (paintOn < 5) { 
     paintThis(tileX, tileY); 
    } 
    ... 
} 

僅供參考,map.grid爲32,與您的相同。我剛剛在文件頂部的一個對象中定義了一個好位。

+0

我正在製作遊戲地圖編輯器,你完成了嗎?我一直在工作了2.5年。 – Kivylius

+1

https://github.com/ndugger/vorge - 除了自動調節功能外,我幾乎完成了地圖編輯器。隨意從代碼中抓取。我很快就會從頭開始,安吉恩。 – ndugger

+1

此外,這裏是地圖編輯器在使用的視頻:https://www.youtube.com/watch?v=5D2-uF1JRn8那天我生病了,所以請原諒安靜,哈哈 – ndugger