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();
分享到:
相关推荐
Flex RSL(Runtime Shared Libraries)是Adobe Flex框架中的一种机制,用于优化应用程序的加载和运行时性能。RSLs是一组预编译的库,包含了常见的Flex组件和类,允许多个应用程序共享这些资源,减少网络传输的数据量...
4. **ES Module加载CommonJS**:类似地,Webpack也能够处理ES Module导入CommonJS模块的情况,通过Babel等转译工具将CommonJS转换为ES Module格式。 **Webpack的Mode配置** Webpack的`mode`配置选项用于指定应用...
module加载的软件环境仅在当前登录会话中有效。如果用户需要频繁使用特定软件,可以将加载命令放在`~/.bashrc`文件或提交作业脚本中。 **Slurm作业管理系统** Slurm作业管理系统是BSCC-A5系统的核心部分,负责作业...
Flex加载Module是Adobe Flex框架中的一个关键特性,它允许开发者将大型应用程序分解为多个模块,每个模块都可以独立加载和卸载。这样的设计提高了应用程序的响应速度,降低了初始加载时间,并且使得用户能够在需要时...
Linux中的可加载模块(Module)分析
ThreadX Modules动态应用加载用户手册中文版 ThreadX Modules 是一种动态应用加载技术,允许应用程序在运行时加载独立的模块。该技术特别适合Core-based应用程序,能够动态地加载新的功能模块,以满足不断变化的...
在Flex开发中,`ModuleLoader` 是一个关键组件,它允许开发者动态地加载MX模块(即Flex模块,独立的SWF文件)。`ModuleLoader` 的主要功能是将模块的加载过程与应用程序的其余部分分离,这有助于实现代码的模块化和...
虽然`modulejs`主要基于同步加载模型,但可以通过自定义加载策略实现异步加载。例如,可以使用回调函数或者Promise来处理模块的异步加载,这在处理大型或动态加载的模块时非常有用。 **命名空间与模块路径** `...
JS错误Uncaught SyntaxError: ...在报错中了解到,是说无法在模块外部使用import语句,因为Module 的加载实现的是es6语法,所以在浏览器加载html文件时,需要在script 标签中加入type=”module”属性。 解决办法:
动态加载和卸载Module是优化应用程序性能和减少初始化时间的有效方法,特别是在需要根据用户需求按需加载功能的情况下。 1. **动态加载Module**: 动态加载Module是通过Flex的`ModuleFactory`类实现的。首先,我们...
### Linux模块(Module)详解 #### 一、模块概念解析 在深入探讨Linux模块的编写与编译之前,让我们首先理解什么是Linux模块。如果将Linux内核比喻为一个书架,那么书架上的每一本书就可以看作是内核提供的各种功能...
Linux内核模块加载顺序控制是Linux操作系统中一项关键技术,它决定了内核模块按照何种顺序被加载到内核中。本文将从多个角度阐述内核模块加载顺序的控制机制,包括模块的顺序声明、内核模块加载顺序控制的原理、内核...
在Linux操作系统中,模块(Module)是内核可加载的代码片段,它们提供了对特定硬件设备的支持或扩展了内核的功能。"Linux Hello Module"是一个经典的起点,对于想要学习Linux内核编程的人来说,它就像“Hello World...
WordPress外贸企业主题Module开心版[更新至V4.5.4],Module主题采用全新模块化开发,首页模块可视化拖拽自由组合,可自定义搭建出不同行业适用的企业网站。同时主题全面支持WPML多语言切换,可轻松搭建外贸网站。 ...
但是,在动态路由中使用import()函数加载模块时,可能会遇到“加载不到module”的问题,本文将针对此类问题展开讨论,并提供解决方案。 ### Vue动态路由与异步加载import组件 动态路由是指路由地址或参数在应用...
然而,在这样的环境中,我们可能会遇到一个问题,即在运行或调试代码时,`System.getProperty("user.dir")`方法返回的不是当前module的实际路径,而是IDE的默认工作目录,这可能导致文件操作或配置加载出现问题。...
版本信息的目的是确保当内核源码发生改变时,已编译的模块仍然能够正确地与新内核交互,避免因符号不匹配导致的加载失败。 在描述中提到的"symvers example in the archive",可能是指一个包含示例的压缩包,展示了...
配置时,通过`load_module`指令加载模块,然后在合适的上下文中使用`lua`指令插入Lua代码。 3.2 常见指令 - `set_by_lua`: 在配置阶段设置变量。 - `access_by_lua`: 处理请求的访问控制。 - `content_by_lua`: ...
在JBoss中,模块(Module)系统是其核心组件之一,它负责管理类加载器和依赖关系,使得应用程序能够高效、安全地运行。这篇博客文章"JBoss 引用 module 说明"可能详细介绍了如何在JBoss环境中引用和管理模块。 首先...
3. **unloadModule(name)**:卸载已加载的模块,释放资源,这对于内存管理特别有用。 三、使用示例 ```javascript // 加载外部脚本 myDynamicLoader.loadScript('path/to/script.js', function() { console.log('...