2011-11-18 39 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

相关问题