`
zhongrenmeng
  • 浏览: 13846 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Flex load modules READY 事件不触发问题

 
阅读更多

      如 http://archive.cnblogs.com/a/2234982/ 所说, 在使用ModuleLoader加载器;和使用ModuleManager进行加载flex模块时,必须要把对应的变量定义为全局变量, 否则其READY事件不会触发。

      参考过很多资料, 归其根本是由于在加载器调用了load方法后, 如果变量未定义为全局变量,那么可能被flxe的gc机制给卸载掉,也即根本的解决方法是不然加载器被gc,即要使用时必须留有应用。由于开始没明白其中道理,犯了个错误。如代码:

public class TaskLoadModule
	{
		public function TaskLoadModule()
		{
			super();
		}
		protected var moduleInfo:IModuleInfo
		public function loadFromLocal($local:String):void{
			moduleInfo = ModuleManager.getModule(local);
			moduleInfo.addEventListener(ModuleEvent.READY,moduleInfoReadyHandler);
			moduleInfo.addEventListener(ModuleEvent.ERROR,moduleInfoErrorHandler);
			moduleInfo.addEventListener(ModuleEvent.PROGRESS,moduleProgressHandler);
			trace('Module start load');
			moduleInfo.load();
		}
		public function moduleProgressHandler($e:ModuleEvent):void{
			trace('Module load progress: '+$e.bytesLoaded+" / "+$e.bytesTotal);
		}
		public function moduleInfoReadyHandler($e:ModuleEvent):void{
			trace('Module load ready: '+local);
		}
		public function moduleInfoErrorHandler($e:ModuleEvent):void{
			trace($e.errorText);
		}
	}

 

    如上定义的moduleInfo在类中确实为全局变量,但是我在页面中引用的代码却是如下:

   

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
					   xmlns:s="library://ns.adobe.com/flex/spark"   
					   xmlns:mx="library://ns.adobe.com/flex/mx"  >
	<fx:Script>
		<![CDATA[

			protected function button1_clickHandler(event:MouseEvent):void
			{
				var load:TaskLoadModule=new TaskLoadModule();
				load.load("module/TestModule.swf",null);
			}

		]]>
	</fx:Script>
	<s:Button x="205" y="0" label="按钮" click="button1_clickHandler(event)"  />
</s:WindowedApplication>

    这样就出现了,在click事件执行完成后,TaskLoadModule也会被gc,相应的moduleInfo也被gc掉了,所以一直未触发moduleInfo的Ready事件。

     记下错误,以便以后不再出这样的笑话

分享到:
评论

相关推荐

    Flex批量管理Modules

    在Flex工程中添加Module的方法是:在FlashBuilder中右键工程目录-&gt;Porperties-&gt;Flex Modules, 然后就可以add/edit/remove需要的module了, 但问题 是无论添加多少module都要点击add按钮一个一个添加! 像我们的项目一...

    flex监听浏览器关闭事件

    ### Flex监听浏览器关闭事件 在Web开发中,有时我们需要对用户关闭浏览器窗口的行为进行监听,并在用户尝试关闭页面时给出提示或执行某些操作。本文将详细介绍如何利用Flex结合JavaScript实现这一功能。 #### 1. ...

    flex事件运行流程

    在这个例子中,MXML文档结构决定了组件的实例化顺序和事件触发的时间点,开发者可以通过添加事件监听器来观察和响应这些事件。 总之,理解Flex事件运行流程,特别是`applicationComplete`和`creationComplete`事件...

    flex事件flex事件flex事件flex事件

    - **DOM事件**:如`click`, `mouseover`, `mouseout`, `keydown`等,这些通用事件可以在任何元素上触发,包括Flex容器和项目。 - **自定义事件**:开发者可以通过`CustomEvent` API创建与Flex布局相关的自定义事件...

    flex4自定义事件用法

    - 在需要触发事件的地方,使用`dispatchEvent()`方法派发自定义事件。确保事件对象已经被正确实例化并设置了必要的属性,如事件类型、目标等。 4. **注册事件监听器** - 要响应自定义事件,需要在目标组件上添加...

    Flex读取XML不刷新问题

    ### Flex读取XML不刷新问题解析 在Flex应用开发中,常常会遇到读取XML数据时出现不刷新的问题。这不仅影响用户体验,也可能导致数据处理出现异常情况。本文将从多个角度深入分析此问题,并提供可能的解决方案。 ##...

    Flex事件机制详细说明

    在Flex中,可以通过调用`dispatchEvent()`方法手动触发事件。该方法的语法如下: ```actionscript objectInstance.dispatchEvent(new Event("event_type")): Boolean ``` 其中`event_type`是事件类型,可以是Flex...

    Flex各自定义组件事件通讯例子

    在Flex开发中,自定义组件和事件通讯是构建复杂应用程序的关键技术。本示例通过一个简单的用户登录场景,深入解析了如何实现组件间的有效通信。下面将详细解释Flex自定义组件、事件处理以及它们在实际应用中的作用。...

    flex 模块化 modules文档

    2. **加载事件**:加载过程中会触发一系列事件,例如`ModuleLoaderEvent.LOAD_START`、`ModuleLoaderEvent.PROGRESS`和`ModuleLoaderEvent.LOAD_SUCCESS`等,这些事件可以帮助开发者监控加载过程。 3. **卸载模块**...

    flex 自定义控件、事件

    在MXML中,你可以使用`&lt;mx:Metadata&gt;`标签声明自定义事件,然后在代码中使用`dispatchEvent()`方法触发这些事件。 5. **MXML使用**:MXML是一种声明式语言,用于描述Flex界面的布局和组件。在MXML文件中,你可以像...

    Flex Tree 的右键菜单事件

    首先,我们要了解Flex中的Event.MENU_SHOW事件,这是在用户打开右键菜单时触发的事件。为了监听这个事件,我们需要在Tree组件上添加事件监听器。代码示例如下: ```actionscript tree.addEventListener(Event.MENU_...

    精通flex3.0 精通 Flex3.0 LCDS ActionScript 事件

    - **事件模型**:基于观察者模式,事件源触发事件,事件监听器接收并处理事件。 - **事件类型**:包括鼠标事件、键盘事件、组件事件、数据事件等多种类型。 - **事件生命周期**:事件的派发、传播和处理过程,...

    Flex事件机制(通俗易懂)

    本文将深入探讨Flex事件机制的基础概念、事件注册通道、事件触发方式、事件分发机制等关键知识点,并尝试以简单明了的方式进行解释。 #### 二、事件机制简介 ##### 1. 什么是事件机制? 事件机制是Flex中非常核心...

    flex控件事件

    事件处理函数会在事件触发时被调用。 5. 事件处理函数: 这是实际执行操作的部分,通常定义为一个函数,用于处理特定的事件。例如,对于按钮的点击事件,处理函数可能会更新数据或导航到新的视图。 6. 事件冒泡和...

    flex 模块化modules源码例子

    9. **调试和测试模块**:使用Flex Builder或类似工具,可以单独调试和测试每个模块,然后再进行整体集成测试,这有助于找出并修复问题。 10. **模块化的优势**:模块化使得Flex项目更易于维护和升级,团队协作效率...

    flex 事件流原理

    3. **事件触发**:事件触发时,实际是调用了`dispatchEvent`方法,将事件对象分发出去。事件对象通常包含了事件的名称(`name`)、是否冒泡(`bubbles`)等信息。例如,`MouseEvent`的`bubbles`属性为`false`时,...

    Flex4.5事件机制

    在Flex中,用户的行为,如点击按钮或输入文本,会触发相应的事件,这些事件包含关于事件的信息,并通知相关对象进行处理。 DOM3事件机制包括四个主要部分:注册事件侦听器、发送事件、侦听事件和移除事件侦听器。以...

    flex自定义事件、简单例子说明

    ### Flex自定义事件详解 Flex 是一款用于构建和部署跨平台桌面应用与移动应用的开源框架,它基于Adobe Flash Platform。在Flex应用开发过程中,事件处理机制是非常重要的一个环节,而自定义事件则是这一机制中的...

    flex自定义组件事件DEMO

    - 派发事件:在组件中使用dispatchEvent方法触发自定义事件。 3. 事件处理:处理自定义事件通常需要在组件内部注册事件监听器,并在监听器函数中处理事件。监听器可以添加到组件本身或其父组件上,使用...

    flex的事件详解

    这些事件触发了应用程序的响应,从而实现用户界面的动态更新和其他业务逻辑的执行。 #### 三、事件模型:基于DOM3的事件机制 Flex采用了一种符合标准的事件模型,它基于**DOM3**(Document Object Model Level 3)...

Global site tag (gtag.js) - Google Analytics