モジュールを Flex アプリケーションにロードするときに進行状況バーを追加したいと考えています。したがって、次のようにモジュールローダーを作成しました。しかし、アプリケーションでそれを使用してモジュールをロードする方法がわかりません。誰でもこれで私を助けてくれますか?MYコードは以下の通りです。私のメイン アプリケーションには、次の 2 つのモジュールを含むビュースタックがあります。Module1 はログイン フォームであり、ログイン フォームで [OK] をクリックすると、Module1 をロードする必要があることに注意してください。
<mx:ViewStack id="mainstack" width="100%" height="100%">
<mx:HBox id="Mod1Loader" width="100%" height="100%" label="Mod1Loader" horizontalAlign="center" verticalAlign="middle">
<mx:ModuleLoader url="Mod1.swf" id="Module1" />
</mx:HBox>
<mx:HBox id="Mod2Loader" width="100%" height="100%" label="Mod2Loader" horizontalAlign="center" verticalAlign="middle">
<mx:ModuleLoader url="Mod2.swf" id="Module2" width="100%" height="100%"/>
</mx:HBox>
</mx:ViewStack>
CustomModuleLoader.mxml は次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<s:ModuleLoader xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="400" height="300"
creationComplete="init()">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.core.UIComponent;
public var standin:UIComponent;
public function init():void {
addEventListener("urlChanged", onUrlChanged);
addEventListener("loading", onLoading);
addEventListener("progress", onProgress);
addEventListener("setup", onSetup);
addEventListener("ready", onReady);
addEventListener("error", onError);
addEventListener("unload", onUnload);
standin = panel;
removeElement(standin);
}
public function onUrlChanged(event:Event):void {
if (url == null) {
if (contains(standin))
removeElement(standin);
} else {
if (!contains(standin))
addElement(standin);
}
progress.indeterminate=true;
}
public function onLoading(event:Event):void {
progress.label="Loading module " + url;
if (!contains(standin))
addElement(standin);
progress.indeterminate=true;
}
public function onProgress(event:Event):void {
progress.label="Loaded %1 of %2 bytes...";
progress.indeterminate=false;
}
public function onSetup(event:Event):void {
progress.label="Module " + url + " initialized!";
progress.indeterminate=false;
}
public function onReady(event:Event):void {
progress.label="Module " + url + " successfully loaded!";
if (contains(standin))
removeElement(standin);
}
public function onError(event:Event):void {
progress.label="Error loading module " + url;
}
public function onUnload(event:Event):void {
if (url == null) {
if (contains(standin))
removeElement(standin);
} else {
if (!contains(standin))
addElement(standin);
}
progress.indeterminate=true;
progress.label="Module " + url + " was unloaded!";
}
]]>
</fx:Script>
<s:Panel id="panel" width="100%" title="Status of Operations">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<mx:ProgressBar width="100%" id="progress" source="{this}"/>
</s:Panel>
</s:ModuleLoader>
あなたの貴重な助けが必要です。
どうもありがとう。