我在 AS3 中创建了一个物品栏,它允许我将物品放在壁橱的插槽中,或者放在物品栏中的插槽中。它完全有效,但有一个问题。在游戏中,您应该能够购买新物品并将它们添加到壁橱中。我希望将其保存下来,以便下次玩时可用。
为此,我想将数组保存到 SharedObject,然后从数组中动态创建项目。
现在我对每个对象都使用老式的硬编码;
Itemwrench = new WrenchItem();
Itemwrench.x = par.toolCloset.kast_1.slotTC1.x + 400;
Itemwrench.y = par.toolCloset.kast_1.slotTC1.y + 245;
Itemwrench.gotoAndStop(2);
Itemwrench.name = "slotTC1";
Itemwrench.TC = 1;
NotinventoryParentTC.addChild(Itemwrench);
但是,要动态添加它们,我必须在将其添加到舞台之前使用 getChildByName,这是不可能的。
如果可能的话,你能告诉我如何正确地做到这一点吗?
您需要的资料:
- 这些物品都存储在带有插槽的壁橱中(壁橱中的影片剪辑中的实例)。
- 项目需要在 for 循环中获取名称 slotTC + 整数。
- 当您将它们从壁橱中取出或放回壁橱时,物品的名称会根据它们分配的插槽编号而变化。
for(var i:int = 0; i < itemsInTC.length - itemsInTC.indexOf(e.currentTarget.name) - 1; i++)
{
nextSlotTC = "slotTC" + (itemsInTC.indexOf(e.currentTarget.name) +2 +i);
trace("Next Slot: " + nextSlotTC);
TempStrTC = "slotTC" + (itemsInTC.indexOf(e.currentTarget.name) +1 +i).toString();
trace("temp string: " + TempStrTC);
NotinventoryParentTC.getChildByName(nextSlotTC).x =
par.toolCloset.kast_1.getChildByName(TempStrTC).x + 400;
NotinventoryParentTC.getChildByName(nextSlotTC).y =
par.toolCloset.kast_1.getChildByName(TempStrTC).y + 245;
if(Boolean(NotinventoryParentTC.getChildByName(nextSlotTC)))
{
NotinventoryParentTC.getChildByName(nextSlotTC).name = TempStrTC;
}
}
通过这种方式,我分配了一个新名称并将它们放置在带有他们收到的新名称的插槽中。
所以现在我的问题:
如何做到这一点,以便您可以将项目保存到共享对象,以便下次玩游戏时将它们放在壁橱中。
对不起,很长的问题。
提前致谢,
米兰。