我使用 ModuleManager 加载一个模块,就像这个 Class:
public class LoadModule
{
private static var info:IModuleInfo;
private static var display:IVisualElement;
private static var downloadBar:ProgressBar;
private static var parent:Group;
public function LoadModule()
{
}
//load module
public static function load(url:String, parent:Group, bar:Boolean = true):void {
LoadModule.parent = parent;
info = ModuleManager.getModule(url);
info.addEventListener(ModuleEvent.READY, readyHandler);
info.addEventListener(ModuleEvent.SETUP, setupHandler);
info.addEventListener(ModuleEvent.ERROR, errorHandler);
info.load(null, null, null, parent.moduleFactory);
}
//add display object
private static function readyHandler(event:ModuleEvent):void {
LoadModule.display = event.currentTarget.factory.create() as IVisualElement;
parent.addElement(LoadModule.display);
}
private static function setupHandler(event:ModuleEvent):void {
}
//unload module
public static function unload():void {
if (LoadModule.info != null) {
LoadModule.info.addEventListener(ModuleEvent.UNLOAD, unloadHandler);
LoadModule.info.unload();
if (parent.getElementIndex(LoadModule.display) != -1) {
parent.removeAllElements();
LoadModule.display = null;
}
}
}
private static function unloadHandler(event:ModuleEvent):void {
LoadModule.info.removeEventListener(ModuleEvent.UNLOAD,unloadHandler);
trace("unloadModue");
}
//
private static function progresshandler(event:ModuleEvent):void {
downloadBar.label = "haved" + Math.round((event.bytesLoaded /event.bytesTotal) * 100) + "%";
}
private static function errorHandler(event:ModuleEvent):void {
throw Error(event.errorText);
}
public static function setDownloadbar(downloadBar:ProgressBar):void {
LoadModule.downloadBar = downloadBar;
}
}
然后我加载一个模块并卸载一个模块:
LoadModule.unload(); // 1
LodModule.load('..one.swf', parent);
LoadModule.unload(); //2
LodModule.load('...one.swf', parent);
理论上,它只是我应用程序中的一个模块,我使用"PopUpManager"弹出一个框,它应该是一个框。但是,事实上,它是弹出的拖车箱。我使用Flash生成器调试此代码,并且它没有注意到我卸载了swf。我想,它在应用中有拖曳模块。所以,我需要帮助。如何在模块管理器中卸载模块。我希望应用程序中有一个模块,而不是拖曳。谢谢。
如果我正确理解了这个问题,听起来您在卸载模块时遇到问题。 有一个很棒的 Adobe 资源可以帮助您解决这些问题。 一些注意事项:
"如果你有一个无法卸载的模块,诊断问题的步骤是: 1) 确保模块被加载到子应用程序域中(在大多数情况下使用 load() 方法的默认参数) 2) 使用探查器确保模块中没有对对象的引用。
如果引用模块中的任何对象,则模块将不会卸载。 您需要检查以下区域是否未引用相关模块:
- 风格
- 资源
- ExternalInterface.addCallback 函数 定时
- 器和定时器机制
- 听众
- 重点
- 远程对象
- 加载的图像