2014-04-11 86 views
0

晚上好/早上好。要重置遊戲,我需要動態添加對象嗎?

我在As3中創建了一個遊戲,其中敵人沒有動態添加。

if(hero attacks enemy) 
{ then parent.removeChild(enemy) } 

當英雄攻擊敵人時,敵人從我設想的顯示列表中刪除自己。

但是當您重置關卡時,即返回到開始菜單並返回關卡,您將看到敵人不在關卡中,因爲它們已被移除。

我的問題是,有沒有一種方法可以重置該框架中的顯示對象,在As2中我刷新了Flash電影。但是這在編碼方面並不好,因爲它表明你沒有開發或學習。

如果沒有辦法,你會建議添加將被刪除的對象,動態嗎?

另一個問題是,我的水平是在一個容器。

//on the stage, there is a movieclip called container. 
//In this container mc(movie clip) it contains the whole level, including platforms, 
    //enemies and props 

如果我從容器中取出的道具,爲了復位遊戲,我會做到這一點

container.addChild(prop) 
//the question is that how do I set it's x and y position? 

謝謝你,我會欣賞每一個反饋者和建議。

回答

1

是的,當您動態刪除它們時,您需要再次動態添加它們以重置它們。您可以預先定義自己的位置並重新設置它們,或者您可以隱藏這些敵人,並在遊戲重新設置後再次將其顯示出來。取決於你的代碼和結構。

+0

如果我隱藏了敵人,visible = false。敵人仍然與我的玩家互動,除非我將其從陣列中移除。但是我無法從陣列中移除它,因爲我無法從我的敵人級別訪問for循環。 – Moynul

+0

「互動」是什麼意思?您可以禁用它們(使用mouseEnabled或其中的任何類型的變量)。 –

+0

就像命中測試與敵人將是真實的,因爲它在舞臺上,但看不見。但是我會做的,就是將敵人從屏幕上移開,並重置他們的位置,而不是使其可見。當敵人死亡時,它會進入空白關鍵幀。 – Moynul

1

理想情況下,您最好不要將它們從顯示列表中刪除,而是將它們隱藏起來並放回原位並將其位置重置回原來的位置。

一個很好的做法是儘可能避免失控實例化的機會;這意味着,如果你要在每次產生和殺死時實例化並移除敵人,垃圾收集器必須非常努力地跟上。更好的方法是擁有足夠大的敵人,以便一次支持儘可能多的敵人。