加载module时传递参数
来源:互联网 发布:c语言api手册chm 编辑:程序博客网 时间:2024/04/29 08:05
自从 flex3 开始就加入了 module 。在工程中使用 module 可以减少生成的 swf 的大小,或者可以动态添加系统的功能。使用起来非常方便,相对于使用 SwfLoader , ModuleLoader 用起来更加方便。
在使用 ModuleLoader 和 Module 时总会遇到在加载 Module 时传递参数的情况,前几天“一定搞定啥”老兄问了我这个问题,当时我给了他一个思路,就是自定义一个可以传递参数的事件,在 Module 中进行这个事件的监听,需要传递参数时使用 ModuleLoader.child.dispatchEvent(event) 这种方法来进行参数传递。当时我试了一下还是挺好用的。但是有一个前提就是 Module 必须是已经加载完成并且初始化完成之后。如果 Module 是动态加载的,需要在初始化完成之后就得到参数就比较困难了。
起初我想在 ModuleLoader 的 Ready 事件中向 child 派发事件,以为 Ready 事件触发时应该是 Module 已经加载成功之后了。遗憾的是这种方法并不好用,我想原因应该是这样:
在 Ready 事件发生时, Module 是加载成功了,但是加载成功并不意味着初始化完成,事实证明此时 Module 的 swf 还未初始化完成,用 setTimeout 函数测试发现 Ready 事件发生之后大约一秒钟之后 Module 才会响应外部派发的事件,这个时间会因为处理器的处理速度不同而不同,所以用 setTimeout 只是一个最烂的点子。
后来我有一个思路,就是在 Module 初始化成功后,告诉 ModuleLoader 我已经初始化成功了,把参数传给我吧,于是 ModuleLoader 就把参数传给 Module 。很简单的一个对话模型,不过在原有控件基础上实现就很困难,所以需要扩展一下 Module 和 Moduleloader ,把需要对话的机制加进去才可以。
其工作原理图:
首先自定义一个 Event 类,这个类里添加一个成员变量来传递参数:
然后扩展 Module ,创建一个 Module 的子类命名为 MyModule ,在这个类中声明一个事件,派发时机是 Module 的 CREATION_COMPLETE 事件发生后,目的是便于 ModuleLoader 监听这个事件,实现对话的第一步。另外在 Module 的构造函数中注册一个对 MyEvent 事件的 Listener 来监听参数传递事件。
代码如下:
最后扩展一下 ModuleLoader ,定义一个 Moduleloader 的子类 MyModuleloader 。在 Moduleloader 的 READY 事件中为 Moduleloader 的 child 注册一个 ready0 事件的监听,并且在 UNLOAD 的事件中去掉监听。添加了一个新函数 loadModuleParam ,这个函数可以带一个字符串类型的参数。
在使用时,所有的 Module 必须继承与 MyModule ,画面上的控件也要使用 MyModuleloader ,两者配合使用才可以。加载 Module 是必须使用 loadModuleParam 函数。
MyModule 的子类如果要得到参数还必须覆盖一下父类中的 myEventAction 函数:
这样就 OK 了。测试了一下还是很好用的。
这个例子使用 FlashBuilder4 完成的,使用时请注意版本。
可以到http://to9m.download.csdn.net/去下载源代码。
- 加载module时传递参数
- unity在加载场景时传递参数
- Linux Kernel Module 中传递参数
- 如何在加载模块时向模块传递参数值
- Flex ModuleLoader向Module(模块)传递参数实例
- Flex ModuleLoader向Module(模块)传递参数实例
- 加载js 简单获取get传递参数
- insmod加载驱动模块传递参数方法
- 向kernel module 传递参数(Passing Arugments to Kernel Module)
- asp.net 异步加载时,如何传递和获取传入的参数?
- Ext.data.JsonStore使用HttpProxy加载数据时传递参数的两种方法
- Android 显示 WebView ,加载URL 时,向webview的 header 里面传递参数
- jquery.load()函数 在JSP中局部加载刷新页面时的参数传递及获取
- Module加载时出现的问题
- jsf页面参数的传递及加载数据
- jsf页面参数的传递及加载数据
- jsf页面参数的传递及加载数据
- JSF页面间参数的传递及加载初始化数据
- How to Safely Remove a Data Guard Broker Configuration [ID 261336.1]
- 诡异的java代码
- Linux 和 window xp 双系统安装共存、Linux Oracle11g 的安装
- 使用Windows server 2008 R2 wds 和 MDT2010 部署 Windows7 和 Windows xp时,客户端通过网络启动后,蓝屏或者黑屏,无法进入安装界面。
- 好好学习,天天向上。
- 加载module时传递参数
- NIMM简介(二)
- C++ VS C#(4):枚举,结构体
- Solaris 9安装VNC
- GPT磁盘上的分区
- 触发器
- stl里list的sort()用法
- 时间戳
- 【linux】删除以特殊符号开头的文件