2011-11-18 18 views
1

我有一個等軸測圖,有可選擇的瓷磚。該地圖由一個矩陣形成,例如$('div').gameMap({map:[[{"tile":"tile_0","object":"anObjectOnTile"},{"tile":"tile_3","object":""}], [{...}]],mapsize:3});如果瓦片在object:""內有東西,那麼該瓦片在該瓦片的頂部具有該對象(在我的情況下是石油井架的圖像)。如何將此對象附加到等軸測圖上的特定圖塊?

有一個地方按鈕,當點擊時應該在當前選擇的瓷磚頂部放置一個石油井架物體。

不過,我遇到了兩個問題:

  1. 知道哪些瓷磚當前選擇

  2. 添加單個井架

起初我想圖個方法來修改地圖的矩陣,以將對象的名稱(oilDerrick)插入到tile的對象參數中,但現在我認爲更好的解決方案是appen d oilDerrick到瓦片。我無法弄清楚如何追加到特定的瓷磚,而不是每瓷磚

我得設置來看待和玩代碼:http://jsfiddle.net/briz/jdhPW/13/

有一個在地圖上的矩陣設置爲您查看oilDerrick對象,它可以通過刪除字oilDerrick被刪除矩陣

我玩$(".tile").append($('.oilDerrick'));,雖然我知道這將附加到每個瓷磚。但是我根本不知道如何追加以確定如何將其限制爲單個實例。

每個瓷磚都有一個唯一的ID。我也試過這種爲了一個oilDerrick添加一定瓷磚:

$("#placeButton").click(function() 
{ 
     for (var y in config.map) 
     { 
      for (var x in config.map[y]) 
      { 
       document.getElementById(obj.attr('id') + '_tile_' + x + '_' +y).appendChild(".oilDerrick"); 
      } 
     } 
} 

但這來到無濟於事爲好。我想我正朝着正確的方向前進?誰能幫忙?

回答

1

I did some modifications

你的代碼中有一些混亂。例如,你使用jquery,但有很多直接的DOM操作。

.style.background = ... 
// should be 
.css("background",...) 

而最重要的是:

document.getElementById(...) 
// should be 
$("#...") 

更容易,你不覺得?然後,通過創建var currentTile可以簡單地解決問題,並且當用戶選擇一個拼貼時,它將保存它。當點擊'地點'時,$(currentTile).append($('.oilDerrick'));並且石油井架移動到選擇瓷磚的地方。

無論如何,你可以在鏈接中看到更多細節。

+0

太棒了,你們都讓代碼更好,解決了問題!天才!現在唯一的問題是,爲什麼卸下井架後不能「重新附加」... – Briz

+0

我認爲這是主意。有一個標誌var'drillPlaced = true',只是在'$(「#placeButton」)中註釋它。click(function()...' –

+0

這裏是關於看似追加問題的後續問題,如果你想看看:-) http://stackoverflow.com/questions/8189579/why-cant-i-append-an-element-remove-它 - 則 - 追加最相同元件-A-第二 – Briz

相關問題