2 つ以上のモジュール ローダーを使用しようとすると、問題が発生します。私の最初の問題は、複数を使用しようとしたときでした。以下に私の回避策を示します。私はまだモジュールに少し慣れていないので、ここで明らかな何かが欠けていても驚かないでしょう。私を殺すのは、それが機能する場合と機能しない場合があることです。
エラー:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at ModuleInfo/completeHandler()[C:\autobuild\3.x\frameworks\projects\framework\src\mx\modules\ModuleManager.as:717]
私のアプリケーション:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600">
<mx:Script>
<![CDATA[
import mx.core.Application;
import mx.events.ModuleEvent;
import mx.managers.PopUpManager;
import mx.modules.IModuleInfo;
import mx.modules.ModuleManager;
private var popUpManager:PopUpManager;
private var podXml:XML;
private var moduleIsReady:Boolean;
private function getSwf():String
{
return "location/SimpleModule.swf";
}
private function onModuleUnload(moduleEvent:ModuleEvent):void
{
// Had to release in order to get 2 to work, now it breaks on 3
var info:IModuleInfo = ModuleManager.getModule(getSwf());
info.release();
info = null;
trace("module unloaded");
}
private function onModuleReady(moduleEvent:ModuleEvent):void
{
// Module loaded
// moduleIsReady = true; //used as a flag for child to know when the module itself is ready
//var ichild:MyInterface = module.child as MyInterface
//if (module.child != null)
//{
// ichild.doStuff();
//}
}
]]>
</mx:Script>
<mx:Canvas>
<mx:ModuleLoader url="{getSwf()}" id="module" ready="onModuleReady(event)" unload="onModuleUnload(event)" x="50" y="50" width="100" height="100"/>
<mx:ModuleLoader url="{getSwf()}" id="module1" ready="onModuleReady(event)" unload="onModuleUnload(event)" x="50" y="250" width="100" height="100"/>
<mx:ModuleLoader url="{getSwf()}" id="module2" ready="onModuleReady(event)" unload="onModuleUnload(event)" x="50" y="450" width="100" height="100"/>
</mx:Canvas>
</mx:Application>
私のモジュール:
<?xml version="1.0" encoding="utf-8"?>
<mx:Module layout="absolute" xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%" height="100%"
backgroundColor="0xFF0000">
</mx:Module>
ありがとう。