2012-02-16 95 views
0

我在Flash中制作游戏,并使用阵列动态创建项目并将其放置在库存中。 LongSword是一个MovieClip。我把影片剪辑数组中像这样:AS3:如何删除通过数组创建并放置在舞台上的MovieClip?

function buyitem1(e:Event):void 
{ 
    if(Store.itemslot.length < 6 && Store.currentMenu == 1 &&score >= 450) 
    { 
     Store.itemslot.push(new LongSword); 
    } 
} 

现在我想要当长剑为“出售”,从舞台中删除影片剪辑。我怎样才能删除这个长剑?我已经试过:

for(var i:int = 0; i < Store.itemslot.length; i++) 
{ 
    if(Store.itemslot[i] == LongSword) 
    { 
     stage.removeChild(Store.itemslot[0]); 
    } 
} 

香港专业教育学院也尝试:

for(var i:int = 0; i < Store.itemslot.length; i++) 
{ 
    if(Store.itemslot[i] == new LongSword) 
    { 
     stage.removeChild(Store.itemslot); 
    } 
} 

和几个变化。有任何想法吗?

+0

请考虑使用常数,而不是简单的数字。单身人士可以帮助你获得“当前游戏状态”的价值。 – 2012-02-17 23:38:34

回答

1

尝试类似:

for each(var i:MovieClip in Store.itemslot) 
{ 
    if(i is Longsword) 
    { 
     var n:int = Store.itemslot.indexOf(i); 
     Store.itemslot.splice(n, 1); 

     if(i.parent) i.parent.removeChild(i); 

     break; // Only remove one Longsword. 
    } 
} 

如果有长剑的多个实例的阵列中,您可能希望保留对每个实例的引用为更好地比较的地方。

+0

工作就像一个魅力!谢谢=] – Neverlax 2012-02-16 07:09:51

+0

你应该接受答案,如果它解决了你的问题。 :) – Bakapii 2012-02-17 08:47:31

相关问题