2011-05-13 70 views
3

在我的名爲引擎文檔類,舞臺變量是出於某種原因空:文檔類中的stage爲空? ActionScript 3.0中的Flash CS5

package game 
{ 

    import flash.display.MovieClip; 
    import flash.display.Stage; 
    import flash.events.Event; 
    public class Engine extends MovieClip 
    { 
     public function Engine() 
     { 
      trace(stage); // gives Null 
     } 
    } 
} 

這是工作的罰款,直至現在。我最近在符號中添加了兩個動態文本字段,並且突然之間階段爲空。我真的沒有看到連接。

這是我第一次使用actionscript和flash,所以我對一切都有點困惑。

+0

沒有理由這一階段將永遠產生空文檔類。還有其他事情正在發生。或者你試圖在其他地方初始化文檔類。你有關於符號和兩個動態文本字段的更多信息嗎? – Marty 2011-05-13 06:49:23

回答

6

好吧,我已經複製了你所經歷的,在CS5中爲舞臺添加一個TLF字體,必須是造成它的原因。但是這個代碼應該可以解決你的問題:

public function Engine():void 
{ 
    if(!this.stage) 
     this.addEventListener(Event.ADDED_TO_STAGE, init); 
    else 
     init(); 
} 

private function init(e:Event = null):void 
{ 
    this.removeEventListener(Event.ADDED_TO_STAGE, init); 
    trace(stage); 
} 

我的猜測是在這種情況下創建階段有一些延遲。我遇到過這種情況,不知道爲什麼,所以這是我處理它的方式。有用! :)

0

我剛剛遇到了這個項目,我一直在努力了一段時間。 突然間,我的文檔類中的構造函數突然發現它爲舞臺。

在我的情況下(經過幾個小時的偵查),我猜想一個資產已經被加入FLA中,其中有一個一個 TLF TextField。我猜對了,因爲我看到了習慣性的錯誤曾一度,但再也沒有。

通常情況下,這會導致一個可以快速識別並易於修復的錯誤。 還沒有。我發現我的文檔類被添加到舞臺上,然後立即從舞臺上移除 - 至少Event.REMOVED_FROM_STAGE事件正在觸發。

的FLA具有很多在IT資產的並試圖追查一個流浪TLF文本字段(可能是空的)是相當艱鉅的,所以我救了FLA作爲AS2項目,然後將其保存回一個AS3項目。我所有的聯繫都很好,TLF TextField(無論它在哪裏)都被轉換成了ClassicField。一切都很好。

這裏是一個後談論了更直接的問題相同的修訂: How to stop/convert TLF textfield used in flash files when you have list to search?