`
shlei
  • 浏览: 291612 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Flex ModuleLoader和ModuleManager的区别、ModuleManager加载模块实例

    博客分类:
  • FLEX
阅读更多
加载模块简单来说有2种方式,一种是较为简单的使用ModuleLoader,另一种是使用ModuleManager。

ModuleManager类提供了低层次的处理Module的装载卸载以及事件响应等的变成接口。这种方式比起纯粹的ModuleLoader方式稍微复杂一点,但是ModuleManager提供了比ModuleLoader更加强大的能力来管理Module模块的加载过程。

ModuleManager类负责管理加载的模块。当public的ModuleLoader.loadModule和ModuleLoader.unloadModule方法被调用时,组件其实在内部与这个管理器进行通信。你可以用ActionScript直接访问ModuleManager管理的那些模块。当将模块的URL传递到public的ModuleManager.getModule方法中时,则该模块位置就被添加到被管理模块列表中,并返回一个mx.modules.IModuleInfo的实例。
模块本质上就是ModuleManager中private的ModuleInfo类的实例。ModuleInfo对象负责加载SWF文件,并被封装成一个实现了IModuleInfo接口的代理类,由ModuleManager.getModule方法返回。你可以监听这个代理类上的状态事件,以便更好地控制应用程序如何与加载的模块进行交互。

下面的例子使用了ModuleManager来控制将模块添加到容器中显示。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   xmlns:mx="library://ns.adobe.com/flex/mx"
			   viewSourceURL="srcview/index.html">
	<s:layout>
		<s:VerticalLayout/>
	</s:layout>
	<fx:Script>
		<![CDATA[
			import mx.core.IVisualElement;
			import mx.events.ModuleEvent;
			import mx.modules.IModuleInfo;
			import mx.modules.ModuleManager;  
 			private var _moduleInfo:IModuleInfo;
 
 		  private function creationHandler():void 
  		 { 
			 _moduleInfo = ModuleManager.getModule("com/myflexhero/MyFlexHeroTest.swf"); 
	 		 _moduleInfo.addEventListener( ModuleEvent.READY,moduleLoadHandler ); 
			 _moduleInfo.addEventListener( ModuleEvent.PROGRESS,onModuleProgress);
	 		 _moduleInfo.load(); 
  		  }  
 		  private function moduleLoadHandler(event:ModuleEvent ):void 
 		  { 
			  BorderContainer.addElement( _moduleInfo.factory.create() as IVisualElement);
		  } 
 
		 protected function onModuleProgress (e:ModuleEvent) : void {    
			 label.text = "[MyFlexHero]:ModuleEvent.PROGRESS 当前已经加载了: " + e.bytesLoaded + " of " + e.bytesTotal + " loaded.";   
		 }  
 
		 ]]>
	</fx:Script> 
		<s:BorderContainer id="BorderContainer" width="500" height="200" />
		<s:Label id="label" text="[MyFlexHero]:"/>
		<s:Button label="点击加载" click="creationHandler()"/>
</s:Application>

MyFlexHeroTest.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009" 
		   xmlns:s="library://ns.adobe.com/flex/spark" 
		   xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" width="100%" height="100%">
 
	<s:Panel title="MyFlexHeroTest">
		<s:Label text="Hello World!">
 
		</s:Label>
	</s:Panel>
</mx:Module>

下面列出了ModuleManager在加载模块时派发的事件,你可以根据需要监听这些事件并完成自定义事件操作

常量字符串值描述
PROGRESS"progress"加载模块时被调度。你可以用这个事件访问被加载模块的bytesLoaded和bytesTotal属性。
SETUP "setup"当已加载了足够的模块内容时被调度。
READY "ready"当模块完成加载时被调度。
UNLOAD"unload"当卸载模块时被调度。
ERROR "error"当模块下载过程中出错时被调度。


From http://www.myflexhero.com/share/flex-hero-flex4/flex-hero-components/flex-module/291
分享到:
评论

相关推荐

    Flex模块化开发实例

    `ModuleManager`负责模块的加载和卸载,`ModuleLoader`负责显示和隐藏模块,而`ModuleContainer`可以容纳和布局多个模块。 8. **模块的最佳实践**: - **明确模块边界**:确保每个模块有清晰的责任划分。 - **...

    flex module实例

    在Flex应用中,模块可以按需加载,从而优化应用程序的启动时间和内存占用。下面将详细探讨Flex模块的使用和模块间的通讯。 1. **Flex模块的创建** 创建Flex模块首先需要一个独立的MXML文件,该文件定义了一个模块...

    Flex之模块化

    使用`ModuleManager`类来加载和卸载模块。`mx:ModuleLoader`组件是Flex提供的一种UI组件,可以用来在应用程序中显示和管理模块。模块间的通信可通过事件监听、依赖注入或使用全局静态变量等方式实现。 5. **博文...

    Flex Module间通信

    另外,`ModuleManager`类允许对已加载和未加载的模块进行操作,包括获取模块引用。 4. **本地存储和SharedObjects**:如果需要在模块之间持久化数据,可以使用Flash Player的本地存储功能,如SharedObjects。这允许...

    Flex 加载 Module

    Flex加载Module是Adobe Flex框架中的一个关键特性,它允许开发者将大型应用程序分解为多个模块,每个模块都可以独立加载和卸载。这样的设计提高了应用程序的响应速度,降低了初始加载时间,并且使得用户能够在需要时...

    Laravel开发-modulemanager

    而modulemanager则是Laravel生态中的一个重要工具,它为开发者提供了对项目中模块化结构的有效管理和维护。 首先,我们来理解一下模块化的概念。在大型项目中,将功能分解成独立的模块有助于提高代码的可维护性和可...

    flex 客户端缓存

    模块允许我们将大型应用分解为较小、独立的单元,每个单元都可以单独加载和卸载。通过这种方式,我们可以只加载用户需要的特定模块,而不是一次性加载整个应用。此外,模块也可以被缓存,从而提高了加载速度。 实现...

    ModuleManager:用于组织 Terasology 模块的包管理器样式库项目

    模块管理器 用于组织 Terasology 模块的包管理器样式库项目 这个库是功能性的,但仍在孵化中,API 可能会更改,恕不另行通知。 内容 该库使用访问 Terasology 模块存储库 (Maven2) 并读出其内容。 用法 要使用 ...

    Flex添加Module .actionScriptProperties文件自动生成 在此文件中添加 <modules>

    6. **在主应用程序中加载模块**:在主应用程序中,我们需要使用`ModuleManager`类来加载和管理这些模块,以便在运行时动态地引入模块功能。 至于"test"这个文件,它可能是压缩包中的一个测试模块或相关配置文件,...

    wpfprism框架实例代码

    这通常通过`IModuleCatalog`接口和`ModuleManager`类来实现,它们负责发现和加载模块。 - **导航功能**:导航服务是Prism的关键特性之一,它允许在应用程序的不同视图之间进行跳转。在主界面中,我们可以定义一个...

    想学习flex的,应该看看这个说明文档 好东西!

    ModuleManager管理模块化应用的加载;CursorManager则用于改变鼠标光标。对这些管理者的深入理解能提升Flex应用的性能和用户体验。 样式与皮肤是Flex的一大亮点,允许开发者创建高度定制的用户界面。CSS样式可以...

    cairngorm框架module学习二

    - 如何使用Cairngorm的`ModuleLoader`加载和卸载模块 - `ModuleManager`的使用方法,包括注册模块、启动模块、关闭模块等操作 - 事件驱动的模块通信,如何定义自定义事件并使用`EventDispatcher`进行发布和监听 - ...

    ModuleManager

    #模块管理器 该插件旨在为插件带来一些排序功能以及各种功能,以帮助更轻松地管理不同版本的软件。 这样做的原因是基于某些参数进行应用程序升级。 看下面的情况。...这只会加载大于 2.3.5.6 的模块 选项是

    flex3的cookbook书籍完整版dpf(包含目录)

    使用ModuleManager载入模块 22.9节.载入来自不同服务器的模块 22.10节.与模块通信 22.11节.使用查询字符串传递数据给模块 22.12节.使用连接报告优化模块 第二十三章.Adobe Integrated Runtime API(694) 23.1节.借助...

    modulemanager-module:一个用于管理Laravel模块设置,状态等的模块

    "modulemanager-module" 是专为Laravel设计的一个模块管理工具,它允许开发者更高效地管理和控制各个模块的状态、配置以及其他相关设置。 ### 1. 模块化的优势 - **代码组织**:模块化有助于将复杂应用分解为小而...

    prism4 silverlight中文资料

    - **ModuleManager**: 负责模块的加载、初始化和卸载过程。它根据ModuleCatalog中的信息来管理模块的生命周期。 3. **Region**: 区域是UI容器,允许在Shell(主应用程序窗口)中动态插入和替换视图。区域可以是一...

    Microsoft Prism 中文入门教程-part 3

    4. **加载模块**:在Shell初始化之后,可以通过模块管理器(ModuleManager)来加载应用程序所需的模块。 通过上述步骤,我们就可以创建一个基本的Shell并让它成为应用程序的主窗口。 #### 三、MVVM设计模式 MVVM...

    Actionscript该学的重点

    ModuleManager在大型项目中用于管理模块加载;CursorManager则用于控制鼠标光标显示。 总而言之,ActionScript的学习重点在于掌握基础语法、DisplayList和事件系统,深入理解Flex框架,特别是组件、管理者以及样式...

Global site tag (gtag.js) - Google Analytics