Flex中ModuleManager的乙個bug

2022-03-19 16:08:09 字數 2192 閱讀 9156

估且認為它是乙個bug吧,因為到目前為止還是沒想明白造成問題的原因。

在相對較為複雜或是多人協作的flex專案開發中,使用module進行開發是很平常的事情,而module的載入一般常用的有兩種方法:

1、使用moduleloader載入器;

2、使用modulemanager進行載入;

使用moduleloader進行載入:

private function loadmodule(url:string):void

moduleloader.url = url;

}使用modulemanager進行載入:

private function load(url:string):void

private function onready(evt:moduleevent):void

modulemanager類負責管理載入的模組,當將模組的url傳遞到public的modulemanager.getmodule方法中時,則該模組位置就新增到被管理模組的列表中,並返回乙個mx.modules.imoduleinfo的例項。

moduleinfo物件負責載入swf檔案,並被封裝成乙個實現了imoduleinfo介面的**類,由modulemanager.getmodule方法返回,可以監聽**類上的狀態事件,比如:ready、error、setup、progress事件等.

mx.events.moduleevent類

常量字串值

描述

progress

"progress"

載入模組時被排程。可以用這個事件訪問被載入模組的bytesloaded和bytestotal屬性

setup

"setup"

當已載入了足夠的模組內容時被排程

ready

"ready"

當模組完成載入時被排程

unload

"unload"

當解除安裝模組時被排程

error

"error"

但我在寫實際的demo示例時,發現乙個問題,如果沒有事先宣告imoduleinfo類的例項,在使用上面方面載入模組時,第一次載入不會呼叫任何的方法。完成的示例**如下:

//注釋或使用下面一行,執行檢視不同的效果

private function onprogress(evt:moduleevent):void

private function onready(evt:moduleevent):void

private function onerror(evt:moduleevent):void

private function useloader():void

在上面例子中,事先已經宣告過了乙個imoduleinfo類的例項,在載入時如果使用該例項進行載入則一切正常,如果不使用已經被宣告過的例項載入,則第一次載入時,不會有任何的反應,但使用moduleloader是沒有此問題的,所以我只能認為這是乙個bug了

示例專案工程的目錄很簡單:

如果想使用modulemanager載入模組,保險的方式就是先宣告乙個imoduleinfo類的例項,然後使用該例項去載入模組。兩種載入模組的優先方法相比,一般更為常用的是第二種,因為可以預載入模組,比較容易按不同的需求來控制模組。

Flex中的set啊Flex中的set

flex中的set啊flex中的set 2010年10月17日 flex中的set function就是給屬性賦值的,說起來簡單,但是遇到乙個相關的bug還真暈。其實幾天前就遇到類似問題了,我沒有深究,趕進度嘛。今天晚上alan修乙個bug的時候又遇到了,作為小leader,我就得幫他解惑。正好自己...

Flex中的set啊Flex中的set

flex中的set啊flex中的set 2010年10月17日 flex中的set function就是給屬性賦值的,說起來簡單,但是遇到乙個相關的bug還真暈。其實幾天前就遇到類似問題了,我沒有深究,趕進度嘛。今天晚上alan修乙個bug的時候又遇到了,作為小leader,我就得幫他解惑。正好自己...

flex布局中的flex屬性詳解

一 理論 display flex 容器屬性 flex direction,flex wrap,flex flow,justify content,align items,align content 專案的屬性 order,flex grow,flex shrink,flex basis,flex,...