如 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工程中添加Module的方法是:在FlashBuilder中右键工程目录->Porperties->Flex Modules, 然后就可以add/edit/remove需要的module了, 但问题 是无论添加多少module都要点击add按钮一个一个添加! 像我们的项目一...
### Flex监听浏览器关闭事件 在Web开发中,有时我们需要对用户关闭浏览器窗口的行为进行监听,并在用户尝试关闭页面时给出提示或执行某些操作。本文将详细介绍如何利用Flex结合JavaScript实现这一功能。 #### 1. ...
在这个例子中,MXML文档结构决定了组件的实例化顺序和事件触发的时间点,开发者可以通过添加事件监听器来观察和响应这些事件。 总之,理解Flex事件运行流程,特别是`applicationComplete`和`creationComplete`事件...
- **DOM事件**:如`click`, `mouseover`, `mouseout`, `keydown`等,这些通用事件可以在任何元素上触发,包括Flex容器和项目。 - **自定义事件**:开发者可以通过`CustomEvent` API创建与Flex布局相关的自定义事件...
- 在需要触发事件的地方,使用`dispatchEvent()`方法派发自定义事件。确保事件对象已经被正确实例化并设置了必要的属性,如事件类型、目标等。 4. **注册事件监听器** - 要响应自定义事件,需要在目标组件上添加...
### Flex读取XML不刷新问题解析 在Flex应用开发中,常常会遇到读取XML数据时出现不刷新的问题。这不仅影响用户体验,也可能导致数据处理出现异常情况。本文将从多个角度深入分析此问题,并提供可能的解决方案。 ##...
在Flex中,可以通过调用`dispatchEvent()`方法手动触发事件。该方法的语法如下: ```actionscript objectInstance.dispatchEvent(new Event("event_type")): Boolean ``` 其中`event_type`是事件类型,可以是Flex...
在Flex开发中,自定义组件和事件通讯是构建复杂应用程序的关键技术。本示例通过一个简单的用户登录场景,深入解析了如何实现组件间的有效通信。下面将详细解释Flex自定义组件、事件处理以及它们在实际应用中的作用。...
2. **加载事件**:加载过程中会触发一系列事件,例如`ModuleLoaderEvent.LOAD_START`、`ModuleLoaderEvent.PROGRESS`和`ModuleLoaderEvent.LOAD_SUCCESS`等,这些事件可以帮助开发者监控加载过程。 3. **卸载模块**...
在MXML中,你可以使用`<mx:Metadata>`标签声明自定义事件,然后在代码中使用`dispatchEvent()`方法触发这些事件。 5. **MXML使用**:MXML是一种声明式语言,用于描述Flex界面的布局和组件。在MXML文件中,你可以像...
首先,我们要了解Flex中的Event.MENU_SHOW事件,这是在用户打开右键菜单时触发的事件。为了监听这个事件,我们需要在Tree组件上添加事件监听器。代码示例如下: ```actionscript tree.addEventListener(Event.MENU_...
- **事件模型**:基于观察者模式,事件源触发事件,事件监听器接收并处理事件。 - **事件类型**:包括鼠标事件、键盘事件、组件事件、数据事件等多种类型。 - **事件生命周期**:事件的派发、传播和处理过程,...
本文将深入探讨Flex事件机制的基础概念、事件注册通道、事件触发方式、事件分发机制等关键知识点,并尝试以简单明了的方式进行解释。 #### 二、事件机制简介 ##### 1. 什么是事件机制? 事件机制是Flex中非常核心...
事件处理函数会在事件触发时被调用。 5. 事件处理函数: 这是实际执行操作的部分,通常定义为一个函数,用于处理特定的事件。例如,对于按钮的点击事件,处理函数可能会更新数据或导航到新的视图。 6. 事件冒泡和...
9. **调试和测试模块**:使用Flex Builder或类似工具,可以单独调试和测试每个模块,然后再进行整体集成测试,这有助于找出并修复问题。 10. **模块化的优势**:模块化使得Flex项目更易于维护和升级,团队协作效率...
3. **事件触发**:事件触发时,实际是调用了`dispatchEvent`方法,将事件对象分发出去。事件对象通常包含了事件的名称(`name`)、是否冒泡(`bubbles`)等信息。例如,`MouseEvent`的`bubbles`属性为`false`时,...
在Flex中,用户的行为,如点击按钮或输入文本,会触发相应的事件,这些事件包含关于事件的信息,并通知相关对象进行处理。 DOM3事件机制包括四个主要部分:注册事件侦听器、发送事件、侦听事件和移除事件侦听器。以...
### Flex自定义事件详解 Flex 是一款用于构建和部署跨平台桌面应用与移动应用的开源框架,它基于Adobe Flash Platform。在Flex应用开发过程中,事件处理机制是非常重要的一个环节,而自定义事件则是这一机制中的...
- 派发事件:在组件中使用dispatchEvent方法触发自定义事件。 3. 事件处理:处理自定义事件通常需要在组件内部注册事件监听器,并在监听器函数中处理事件。监听器可以添加到组件本身或其父组件上,使用...
这些事件触发了应用程序的响应,从而实现用户界面的动态更新和其他业务逻辑的执行。 #### 三、事件模型:基于DOM3的事件机制 Flex采用了一种符合标准的事件模型,它基于**DOM3**(Document Object Model Level 3)...