package net.lanelife.framework.catwindows.core
{
import flash.events.ProgressEvent;
import flash.system.ApplicationDomain;
import mx.core.FlexGlobals;
import mx.events.ModuleEvent;
import mx.modules.IModuleInfo;
import mx.modules.ModuleManager;
import net.lanelife.framework.catwindows.utils.ProgressBar;
[Bindable]
public class Application
{
public var name:String;
public var moduleUrl:String;
private var module:IModuleInfo;
private var progressBar:ProgressBar;
public function run():void
{
module = ModuleManager.getModule(moduleUrl);
module.addEventListener(ModuleEvent.READY, module_readyHandler);
module.addEventListener(ModuleEvent.PROGRESS, module_progressHandler);
module.addEventListener(ModuleEvent.ERROR, module_errorHandler);
if (module.loaded)
{
start();
}
else
{
progressBar = new ProgressBar();
module.load(ApplicationDomain.currentDomain);
}
}
private function start():void
{
//trace("========"+module.url)
var application:IApplication = module.factory.create() as IApplication;
FlexGlobals.topLevelApplication.addElement(application);
application.run();
module.unload();
}
private function module_readyHandler(event:ModuleEvent):void
{
event.target.removeEventListener(ModuleEvent.READY, module_readyHandler);
event.target.removeEventListener(ModuleEvent.PROGRESS, module_progressHandler);
event.target.removeEventListener(ModuleEvent.ERROR, module_errorHandler);
progressBar.close();
start();
}
private function module_progressHandler(event:ModuleEvent):void
{
//trace(module.url)
progressBar.progress(event as ProgressEvent, "正在加载"+name+",请稍候...");
}
private function module_errorHandler(event:ModuleEvent):void
{
event.target.removeEventListener(ModuleEvent.READY, module_readyHandler);
event.target.removeEventListener(ModuleEvent.PROGRESS, module_progressHandler);
event.target.removeEventListener(ModuleEvent.ERROR, module_errorHandler);
progressBar.showError(name+"加载失败:"+event.errorText);
}
}
}
模块加载代码,用法:
loginApplication = new net.lanelife.framework.catwindows.core.Application();
loginApplication.name = "登录程序";
loginApplication.moduleUrl = "os/software/net/lanelife/webos/soft/login/Login.swf";
loginApplication.run();