載入module時傳遞引數

2021-05-23 19:56:29 字數 2303 閱讀 8290

自從

flex3

開始就加入了

module

。在工程中使用

module

可以減少生成的

swf的大小,或者可以動態新增系統的功能。使用起來非常方便,相對於使用

swfloader

,moduleloader

用起來更加方便。

在使用moduleloader

和module

時總會遇到在載入

module

時傳遞引數的情況,前幾天「一定搞定啥」老兄問了我這個問題,當時我給了他乙個思路,就是自定義乙個可以傳遞引數的事件,在

module

中進行這個事件的監聽,需要傳遞引數時使用

moduleloader.child.dispatchevent(event)

這種方法來進行引數傳遞。當時我試了一下還是挺好用的。但是有乙個前提就是

module

必須是已經載入完成並且初始化完成之後。如果

module

是動態載入的,需要在初始化完成之後就得到引數就比較困難了。

起初我想在

moduleloader

的ready

事件中向

child

派發事件,以為

ready

事件觸發時應該是

module

已經載入成功之後了。遺憾的是這種方法並不好用,我想原因應該是這樣: 在

ready

事件發生時,

module

是載入成功了,但是載入成功並不意味著初始化完成,事實證明此時

module

的swf

還未初始化完成,用

settimeout

函式測試發現

ready

事件發生之後大約一秒鐘之後

module

才會響應外部派發的事件,這個時間會因為處理器的處理速度不同而不同,所以用

settimeout

只是乙個最爛的點子。

後來我有乙個思路,就是在

module

初始化成功後,告訴

moduleloader

我已經初始化成功了,把引數傳給我吧,於是

moduleloader

就把引數傳給

module

。很簡單的乙個對話模型,不過在原有控制項基礎上實現就很困難,所以需要擴充套件一下

module

和moduleloader

,把需要對話的機制加進去才可以。

其工作原理圖:

首先自定義乙個

event

類,這個類裡新增乙個成員變數來傳遞引數:

然後擴充套件

module

,建立乙個

module

的子類命名為

mymodule

,在這個類中宣告乙個事件,派發時機是

module

的creation_complete

事件發生後,目的是便於

moduleloader

監聽這個事件,實現對話的第一步。另外在

module

的建構函式中註冊乙個對

myevent

事件的listener

來監聽引數傳遞事件。

**如下:

最後擴充套件一下

moduleloader

,定義乙個

moduleloader

的子類mymoduleloader

。在moduleloader

的ready

事件中為

moduleloader

的child

註冊乙個

ready0

事件的監聽,並且在

unload

的事件中去掉監聽。新增了乙個新函式

loadmoduleparam

,這個函式可以帶乙個字串型別的引數。

在使用時,所有的

module

必須繼承與

mymodule

,畫面上的控制項也要使用

mymoduleloader

,兩者配合使用才可以。載入

module

是必須使用

loadmoduleparam

函式。

mymodule

的子類如果要得到引數還必須覆蓋一下父類中的

myeventaction

函式:

這樣就ok

了。測試了一下還是很好用的。

這個例子使用

flashbuilder4

完成的,使用時請注意版本。

Module載入時出現的問題

在載入多個module時出現了型別轉換展示,資訊如下 typeerror error 1034 強制轉換型別失敗 無法將 mx.managers dragmanagerimpl 3a37291 轉換為 mx.managers.idragmanager。從google上搜尋的結果 兩個解決方案的文章,...

spring mvc 重定向時引數傳遞

實現登入後跳轉到登入前頁面時,發現用model.addattribute 再redirect,跳轉後url會附上引數。如 model.addattribute msg 使用者名稱或密碼錯誤 跳轉後會是 位址?msg 使用者名稱或密碼錯誤 若想去掉,可以使用redirectattributes的add...

呼叫方法時引數的傳遞

呼叫方法時,傳遞給方法的變數如果是基本型別,傳入到方法中後就是該方法的區域性變數,在呼叫時會在記憶體中開闢新的空間去儲存,所以對於引數名與成員變數一致的情況下,方法中改變的變數的值是與成員變數不衝突的,也就是不會影響到成員變數,除非使用this關鍵字來指向成員變數!下面是 示例 public cla...