2011-07-21 46 views
0

這裏的交易, 我有一個主要的類,我從.fla文件調用。一切工作正常,直到我在庫中設置一個對象「導出爲actionscript」...在該階段不再工作了,現在階段返回「null」,僅僅因爲我檢查了一個對象「導出動作腳本」。階段空ActionScript 3的Flash CS5導出腳本

我使用閃光燈CS5,它從來沒有發生在我的早期版本的閃光燈。

對不起英文......我希望我已經夠清楚了。

代碼示例:

package com { 

import flash.display.MovieClip; 

public class Teste extends MovieClip { 

    public function Teste() { 
     trace(stage)// traced null 
    } 
} 
} 

我會盡力解釋我做的步驟。 - 創建Teste類; - 打開.fla文件,並在.fla文件的屬性上的Class字段中添加該Class; - 創建和MovieClip並嘗試從Actionscript中導出; 問題出現了......當我做到這一點時,現在舞臺返回Null,只是因爲我在庫中導出了一個MovieClip。 o.O

+0

你可以解釋一下'舞臺現在回到「空」'?也許在你測試舞臺的地方發佈代碼? – shanethehat

+0

我將發佈代碼示例。 – toinsane

回答

1

原因在於Stage沒有太多的負載時可能馬上變得可用。現在你已經爲Actionscript添加了一些要導出的內容,加載可能需要花費數毫秒的時間,並且階段將不可用。

總是檢查階段是否存在,然後在嘗試引用它之前等待它存在。

試試這個:

package com { 

import flash.display.MovieClip; 

public class Teste extends MovieClip { 

    public function Teste() { 
     if(!stage) addEventListener(Event.ADDED_TO_STAGE, _addedToStage) 
     else _addedToStage(); 
    } 

    private function _addedToStage(e:Event = null) 
    { 
     trace(stage)// traced null 
    } 
} 
} 
+0

是的,我剛剛編輯了答案來解釋一下。 – zachzurn

+0

用於打字速度更快的:) – shanethehat

+0

哈哈,謝謝!我們都回答同樣的問題。 – zachzurn

0

如果這是你的文檔類,然後有一個很好的機會,舞臺對象存在之前該代碼初始化。我只是猜測,但我期望行爲的改變是由你的'導出動作'類在第一幀加載它們的定義並導致某種形式的延遲造成的。

嘗試等待階段存在:

package com { 

import flash.display.MovieClip; 

public class Teste extends MovieClip { 

    public function Teste() { 
     if(stage) { 
      init(); 
     } else { 
      addEventListener(Event.ADDED_TO_STAGE,init); 
     } 
    } 

    private function init(evt:Event = null):void { 
     removeEventListener(Event.ADDED_TO_STAGE,init); 
     //stage should now exist 
     trace(stage); 
    } 
} 
} 
相關問題