2012-12-13 63 views
0

我目前有三個類,Main,Externals和Page。Actionscript 2.0:我可以在哪裏放置一個類實例,以便我可以從其他類訪問它?

Main類創建Externals類的一個實例,該實例加載XML,並且一旦加載XML,Externals實例也會創建Page類的一個實例,然後該實例將使用來自Externals類的信息來填充自身。

我最初希望Externals是一個靜態類,然後我發現在ActionScript 2.0中沒有靜態類,只有靜態方法。

然後我聲明所有的Externals方法都是靜態的,但是發現當我試圖訪問它們時,構造函數沒有運行,並且XML沒有被加載和解析。我想過每次重寫加載和解析XML的方法,但是意識到A:這會浪費網絡資源;和B:由於網絡比處理器慢,我會遇到計時問題,因爲代碼會嘗試訪問尚未加載的數據。

因此,我決定將所有東西都恢復爲實例方法,並在Main類中創建一個實例,它將運行其構造函數,使用XML加載它,將所有內容解析爲整齊的getter,然後創建一個Page,這會創建將消耗XML數據的頁面。

但是我仍然留有一個難題:我只能從Externals類中創建Page類的實例,因爲它只能在XML數據已經被加載之後啓動,但我可以除了Main類之外,我不能從任何地方訪問我收集到的Externals實例的數據。在我的頁面實例中,我唯一的辦法是創建一個新實例,但這是一個非常糟糕的主意,原因有兩個:1:上述時間問題;和2:Externals類在完成加載XML時創建一個新的頁面,因此它最終創建一個新的Page實例,這會創建一個新的Externals實例,這將創建一個新的Page實例等等。

我試圖把外部對象的實例在電影的根是這樣的:

_root.externals:Externals = new Externals(); 

,但我不能有訪問它的。

現在我有點難住了。我真的不明白如何做到這一點,但我知道必須有一種方法。有人看到我在這裏做錯了嗎?

回答

0

我猜外部材料類是單?您可以將一個Externals對象的引用傳遞給所有其他對象。或者另一種方式(雖然我並不總是推薦它,但看起來像你所要做的那樣)是在普通級別的根級創建對象,然後通過以下方式在其他對象中訪問它:_root .externalsObject

相關問題