我在Flash Professional CS5.5中使用AS3創建遊戲。舞臺變爲空
在這個遊戲中,我有一個「再次」按鈕,以便玩家可以重置關卡並從新開始。 我現在的問題是:
點擊「再次」後,舞臺變爲空。
我在「ResetLevel」方法中做的所有事情是,我將某些元素的x和y位置重新設置爲0,從動畫片段中刪除一些項目,但不會從顯示列表中刪除所有項目。所以背景,hud,飛機不會從動畫片段中刪除。這裏是我的顯示列表的草圖。所述可拆卸的物品有時爲零,有時他們是30個或更多個項目(取決於播放時間,等等)
Displaylist:
stage
|-- Game movieclip
|--LevelBackground
|--Removeable item
|--Removeable item
|--Removeable item
|--Plane
|--HUD
但是,消除了「可拆卸items」和設置的位置座標後levelbackground和平面的階段是空值。
也許有人可以幫我指點我解決這個問題的方法。
編輯:
的「ResetLevel」 - 方法將「遊戲影片剪輯」和階段內被稱爲將從「遊戲影片剪輯」來訪問了。所以當我重置關卡時,我不會從顯示列表中刪除「遊戲動畫片段」。我只刪除了一些元素,即動畫片段包含的動畫片段。
這裏從「遊戲MovieClip類」一些僞(GameMC):
public class GameMC extends Sprite {
//Some properties here
public function GameMC() {
//Some code here
//--Events--
this.addEventListener(Event.ADDED_TO_STAGE, Init, false, 0, true);
this.addEventListener(Event.REMOVED_FROM_STAGE, Removed, false, 0, true);
}
private function Init(e:Event) {
this.removeEventListener(Event.ADDED_TO_STAGE, Init);
//Some Code here
}
private function ResetLevel() {
//Some Code here, too
if(removeItemArray.length > 0) {
for(i = 0; i < removeItemArray.length; i++) {
currentRemoveableItem = removeItemArray[i];
this.removeChild(currentRemoveableItem);
removeItemArray.splice(i, 1);
}
}
level.x = 0;
level.y = 0;
trace(stage); //Will output null
}
}
從[文檔](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/如果一個顯示對象沒有被添加到顯示列表中,它的stage屬性被設置爲null。「 – Engineer 2012-07-19 10:59:24
我知道,但是我並沒有移除」遊戲動畫片段(flash movie/display/DisplayObject.html#stage) - >「' 「從我的顯示列表中,在這個動畫片段內,我嘗試訪問stage.stageWidth。在「遊戲動畫片段」內部,我使用了「ADDED_TO_STAGE」和「REMOVED_FROM_STAGE」。 – WolvDev 2012-07-19 11:10:29
GameMC是否有附加到您放置在舞臺上的圖書館物品的機會?如果是這樣,那麼如果你的時間線跳到一個沒有出現的幀,它將自動從舞臺上移除。 – weltraumpirat 2012-07-19 17:08:21