PureMvc(Flex)中如何响应Popup里面的Event
2013-04-25 16:37
183 查看
才解决了Render里的Event的Bubble Up的问题,又遇到新问题:
我用PopupManager显示的一个新创建的弹出式窗口
var popWin:MyPopupWindow = MyPopupWindow.new()
里面要dispatchEvent一个事件,目的是从服务器端取得所需数据。问题来了,dispatchEvent一个事件,没有Mediator可以'听'到,想用PureMvc的方式为PopupWindow单独注册Mediator也不行(相当别扭)。
怎么办呢?
然后Google到好文一篇:http://www.munkiihouse.com/?p=45
这下清楚了,原来所有UIComponent的Parent是Application,而所有Popup的Parent是Application的上级SystemManager。也就是说,你在UICompent上addEventListener是不行的,必须要在SystemManager上addEventListener,还好,每个UICompent都有一个指向SystemManager的属性。
错误代码:
userUIComponent.addEventListener(PopupWindow.USER_EVENT, doSomething)
正确代码:
userUIComponent.systemManager.addEventListener(PopupWindow.USER_EVENT, doSomething)
这样就可以在Mediator中响应Popup里面的事件了,注意:userUIComponent是任意一个ViewComponent, 因为不管那个ViewComponent的systemManager都是指向同一个SystemManager。
完了吗?还没有,Mediator中响应事件后从服务器端接受到了数据,怎么传给PopupWindow呢?因为PopupWindow是在PureMVC的体系之外的(是没有注册的),所以用普通的Mediator传给ViewComponent的办法是不行的。不过找到一个变通的解决办法:
还是要通过SystemManager中转:
Mediator收到服务器的应答响应后,利用ViewComponent(任意)重发Event:
myUI.dispatchEvent(new Event('ServerResponse', true));
然后在PopupWindow中监听SystemManager的事件就OK了:
this.systemManager.addEventListener('ServerResponse', doSomething)
问题解决。
转载:http://blog.sina.com.cn/s/blog_538d55be0100hztl.html
我用PopupManager显示的一个新创建的弹出式窗口
var popWin:MyPopupWindow = MyPopupWindow.new()
里面要dispatchEvent一个事件,目的是从服务器端取得所需数据。问题来了,dispatchEvent一个事件,没有Mediator可以'听'到,想用PureMvc的方式为PopupWindow单独注册Mediator也不行(相当别扭)。
怎么办呢?
然后Google到好文一篇:http://www.munkiihouse.com/?p=45
这下清楚了,原来所有UIComponent的Parent是Application,而所有Popup的Parent是Application的上级SystemManager。也就是说,你在UICompent上addEventListener是不行的,必须要在SystemManager上addEventListener,还好,每个UICompent都有一个指向SystemManager的属性。
错误代码:
userUIComponent.addEventListener(PopupWindow.USER_EVENT, doSomething)
正确代码:
userUIComponent.systemManager.addEventListener(PopupWindow.USER_EVENT, doSomething)
这样就可以在Mediator中响应Popup里面的事件了,注意:userUIComponent是任意一个ViewComponent, 因为不管那个ViewComponent的systemManager都是指向同一个SystemManager。
完了吗?还没有,Mediator中响应事件后从服务器端接受到了数据,怎么传给PopupWindow呢?因为PopupWindow是在PureMVC的体系之外的(是没有注册的),所以用普通的Mediator传给ViewComponent的办法是不行的。不过找到一个变通的解决办法:
还是要通过SystemManager中转:
Mediator收到服务器的应答响应后,利用ViewComponent(任意)重发Event:
myUI.dispatchEvent(new Event('ServerResponse', true));
然后在PopupWindow中监听SystemManager的事件就OK了:
this.systemManager.addEventListener('ServerResponse', doSomething)
问题解决。
转载:http://blog.sina.com.cn/s/blog_538d55be0100hztl.html
相关文章推荐
- Flex的Popup在PureMVC中的数据传出
- Flex 如何在事件响应时传值
- Flex编程注意之如何得到itemRenderer里面的内容
- [Flex]Flex编程注意之如何得到itemRenderer里面的内容
- 如何让UIScrollView里面的UIImageView响应touch事件
- 如何把在flex需要调用的图片打包到swf里面后使用
- flex 如何在validation标签里面写正则表达定义
- 如何在doc里面响应自定义消息?
- Inline CUI PROGRESS_BAR 如何客制化实现对pen move event的响应
- 大神语录1 如何滑动fragmentmanager里面一个fragment里面的viewgroup---dispatchTouchEvent 、onInterceptTouchEvent 、onTouchEvent
- Flex编程注意之如何得到itemRenderer里面的内容
- Flex 如何得到itemRenderer里面的内容
- SkylineGlobe7.0.1版本 主页面如何和Popup里面的嵌入页面相互传值
- 如何在Linux里面限制用户空间
- 从获取QQ验证码谈如何改进用户体验,提高程序的响应效果
- 如何在DataGrid里面使用动态图形表示数字
- Unity开发小型游戏中如何便捷使用PureMVC框架
- (译)在cocos2d里面如何使用Texture Packer和像素格式来优化spritesheet
- 如何让你的WinForm在IE里面跑起来
- flex中如何获得客户端信息