即时制作库存系统,iv设法在x轴上添加/删除和排序项目。所以它所做的就是添加和删除并在一行中使用它们。我似乎无法弄清楚如何让它每10个瓷砖下降1个空间,或者左右。我在我的游戏中使用这样的方法用于另一件事,但是idk ... ic ant想出如何为我的库存做这件事
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);
}
当您点击某个项目
时,此代码会删除并排序库存 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 :(得分:0)
使用模块化运算符
var len:int = inventory.itemsInInventory.length;
item.x = 40 * (len%10);
item.y = 40 * Math.floor(len/10);
你的循环看起来像这样:
for (var i:int = 0; i < itemsInInventory.length; i++)
{
itemsInInventory[i].x = 40 * (i%10);
itemsInInventory[i].y = 40 * Math.floor(i/10);
}