2014-06-25 44 views
0

即時製作庫存系統,並且iv設法在x軸上添加/刪除和排序項目。所以它所做的只是添加和刪除,並將它們放在一行上。我似乎無法弄清楚如何使它每隔10個瓦片就下來1 y的空間,或者如此。即時通訊使用這樣的方法,在我的遊戲另一件事,但IDK的.. IC螞蟻弄清楚如何做到這一點對我的庫存將項目包裝在網格中

   tile.x = TILE_SIZE * (i % 800); 
       tile.y = TILE_SIZE * (j % 600); 

繼承人我的代碼,添加項目到庫存

protected function addInvItem(item:MovieClip, c:Class) 
    { 
     item = new c(); 
     inventory.itemsInInventory.push(item); 
     inventory.inventorySprite.addChild(item); 
     item.x = (inventory.itemsInInventory.length-1)*40; 
     item.y = 0; 
     item.width = 30; 
     item.height = 25; 
     item.addEventListener(MouseEvent.CLICK, inventory.useItem); 
    } 

這個代碼刪除,並當U單擊一個項目

public function useItem(e:MouseEvent) 
    { 
     var item:MovieClip = MovieClip(e.currentTarget); 
     inventorySprite.removeChild(item); 
     itemsInInventory.splice(itemsInInventory.indexOf(item), 1); 
     item.removeEventListener(MouseEvent.CLICK, useItem); 
     sortInventory(); 
    } 
    public function sortInventory() 
    { 
     for (var i:int = 0; i < itemsInInventory.length; i++) 
     { 
      itemsInInventory[i].x = i * 40; 
     } 
    } 

回答

0

採用模塊化操作

012排序清單

你的循環應該是這樣的:

for (var i:int = 0; i < itemsInInventory.length; i++) 
{ 
    itemsInInventory[i].x = 40 * (i%10); 
    itemsInInventory[i].y = 40 * Math.floor(i/10); 
} 
+0

真棒人!這幾乎奏效,但它把第一行中的第一行放在第一行,而不是第二行:c 它也爲所有以下行做了這一點,將第一行第一行放到高位 – Sniffle6

+0

抱歉。我搞砸了...我認爲它應該是: 'item.y = 40 * Math.floor(len/10);' – Karmacon

+0

大聲笑,我改變它之前喲回覆,它是把它的第一個項目上的右側一個空間,其餘都很好,但是當我使用循環它工作正常,所以我可以只用循環添加項目和分類項目:)我真的很感激它! – Sniffle6