2013-03-17 76 views
0

我試圖添加一個對象到舞臺。在文檔類,我用下面的代碼:Flash添加了我的對象兩次和舞臺高度切換

public function StartGame() 
{ 
    gameClass = new GameClass(this); 
    this.addChild(gameClass); 
} 

在遊戲中,我想一個對象添加到舞臺的底部。之後,它應該向上移動,直到它在屏幕之外。我已經添加以下代碼:

public function GameClass(main:MainClass) { 
     this.main = main; 
     viruslist = new Array(); 

     this.addEventListener(Event.ADDED_TO_STAGE, init); 
    } 

    private function init(e:Event):void { 
     addVirus(75); 
    } 

    public function addVirus(xcoor) 
    { 
     trace("Creating virus"); 
     var v:Virus = new Virus(this.main, this, xcoor); 
     this.addChild(v); 
     viruslist.push(v); 
    } 

然後,在病毒類,我做到以下幾點:

public function Virus(main:MainClass, gameKlasse:GameClass, x:Number) { 
     this.main = main; 
     this.game = gameKlasse; 
     this.xcoor = x; 
     this.addEventListener(Event.ADDED_TO_STAGE, init); 
    } 

    private function init(e:Event):void { 
     this.y = main.height; 
     trace("Height: " + y); 
     trace("Stage height: " + main.height); 
     this.addEventListener(Event.ENTER_FRAME, runTime); 
     trace("Virus created"); 
    } 

所以,問題是,我的舞臺是我的屏幕的高度。但是,病毒幾乎被置於頂端。我的日誌顯示:

創建病毒 高度:86 舞臺高度:156.5 病毒創建 身高:156.5 舞臺高度:227創建 病毒

到底哪裏出問題了?爲什麼會創建兩次?爲什麼舞臺高度會改變?爲什麼我的對象不出現在我的屏幕底部?

編輯:使用stage.stageHeight給出了相同的結果。

回答

1

您正在使用main.height和stage.height,而main和stage沒有任何高度,除非您添加了一些東西。 因此,一旦您添加病毒,它只會獲得大於零的高度。

你要找的是stageHeight屬性,它會告訴你可用的高度。你可以通過以下任何方式訪問它:

stage.stageHeight 

祝你好運!

+0

好的,讓我編輯我的問題,因爲問題依然存在。在創建病毒之前,我創建了播放器對象(在x = 2和y = 2上)。所以舞臺上已經有了一些東西。我現在記錄了main.height(因爲stage.stageHeight給出了同樣的問題),但是值完全相同。 – Joetjah 2013-03-17 19:56:18

+0

我知道你的病毒創建了兩次,你確定GameClass只發起過一次嗎?你確定StartGame只被調用過一次嗎? – Michiel 2013-03-17 20:08:20

+0

我無法真正看到高度來自哪裏,這些類是否與圖書館中的圖形對象相關? – Michiel 2013-03-17 20:11:13