加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex4 父子页面交互实现(触发事件)

发布时间:2020-12-15 03:41:51 所属栏目:百科 来源:网络整理
导读:昨天使用了方法回调的方式实现的,今天写了个以手动触发自定义事件,在分派回的事件流中携带交互数据对象的方式实现父子页面交互 首先自定义一个事件,myEvent.as文件 [html] view plain copy package?? {?? ????import?flash.events.Event;?? ?? ????public?

昨天使用了方法回调的方式实现的,今天写了个以手动触发自定义事件,在分派回的事件流中携带交互数据对象的方式实现父子页面交互

首先自定义一个事件,myEvent.as文件

[html] view plain copy
  1. package??
  2. {??
  3. ????import?flash.events.Event;??
  4. ??
  5. ????public?class?MyEvent?extends?Event??
  6. ????{??
  7. ????????public?static?const?CONFIGEDITE:String="configedit";??
  8. ????????public?var?obj:Object;??
  9. ????????public?function?MyEvent(type:String,obj:Object)??
  10. ????????{??
  11. ????????????this.obj?=?obj;??
  12. ????????????super(type);??
  13. ????????}??
  14. ????????override?public?function?clone():Event?{???
  15. ????????????var?e:MyEvent?=?new?MyEvent(CONFIGEDITE,obj);??
  16. ????????????return?e;??
  17. ????????}??
  18. ????}??
  19. }??


父页面,test.mxml文件

[html] view plain copy
  1. <?xml?version="1.0"?encoding="utf-8"?>??
  2. <s:Application?xmlns:fx="http://ns.adobe.com/mxml/2009"???
  3. ???????????????xmlns:s="library://ns.adobe.com/flex/spark"???
  4. ???????????????xmlns:mx="library://ns.adobe.com/flex/mx"?minWidth="955"?minHeight="600"??
  5. ???????????????>??
  6. ????<!--?通过方法赋值的方式回调?-->??
  7. ????<fx:Script>??
  8. ??
  9. ????????<![CDATA[?
  10. ????????????import?mx.managers.PopUpManager;?
  11. ?????????????
  12. ?????????????
  13. ????????????[Bindable]?
  14. ????????????public?var?testForm:TestForm?=?new?TestForm;?//定义为全局的,这样就只弹一个窗口了?
  15. ?????????????
  16. ?????????????
  17. ????????????public?function?jump():void{?
  18. ????????????????//弹出窗口?
  19. ????????????????PopUpManager.addPopUp(testForm,this,false);?
  20. ????????????????//添加自定义事件监听,当触发该事件将执行里面的方法?
  21. ????????????????testForm.addEventListener(MyEvent.CONFIGEDITE,function(e:MyEvent):void{?
  22. ????????????????????showLable.text?=?e.obj.name;?
  23. ????????????????});?
  24. ????????????????//组装父页面要传到子页面的对象?
  25. ????????????????var?obj:Object?=?new?Object;?
  26. ????????????????obj.name?=?valueText.text;?
  27. ????????????????testForm.initPage(obj);?
  28. ????????????}?
  29. ????????]]>??
  30. ????</fx:Script>??
  31. ????<s:VGroup?horizontalAlign="center"?verticalAlign="middle"?width="80%"?height="200">??
  32. ????????<s:Label?text="我是父页面,子页面传过来的值为:"/>??
  33. ????????<s:Label?id?=?"showLable"/>??
  34. ????????<s:TextInput?id="valueText"/>??
  35. ????????<s:Button?label="点击将值传递到子页面"?click="jump()"/>??
  36. ????</s:VGroup>??
  37. </s:Application>??


子页面,TestForm.mxml文件

[html] view plain copy
  1. <?xml?version="1.0"?encoding="utf-8"?>??
  2. <s:TitleWindow?xmlns:fx="http://ns.adobe.com/mxml/2009"???
  3. ???????????????xmlns:s="library://ns.adobe.com/flex/spark"???
  4. ???????????????xmlns:mx="library://ns.adobe.com/flex/mx"?minWidth="400"?minHeight="200"??
  5. ???????????????title="子页面"??
  6. ???????????????close="close()"??
  7. ???????????????>??
  8. ????<fx:Script>??
  9. ????????<![CDATA[?
  10. ????????????import?mx.managers.PopUpManager;?
  11. ?????????????
  12. ????????????//关闭?
  13. ????????????public?function?close():void{?
  14. ????????????????PopUpManager.removePopUp(this);?
  15. ????????????}?
  16. ?????????????
  17. ????????????//初始化?
  18. ????????????public?function?initPage(obj:Object):void{??
  19. ????????????????showLabel.text?=?obj.name;??
  20. ????????????}??
  21. ?
  22. ?????????????
  23. ????????????public?function?goBack():void{?
  24. ????????????????//组装要传到父页面的对象?
  25. ????????????????var?obj:Object?=?new?Object;?
  26. ????????????????obj.name?=?valueText.text;?
  27. ????????????????//手动触发指定事件?
  28. ????????????????var?myEvent:MyEvent?=?new?MyEvent(MyEvent.CONFIGEDITE,obj);?
  29. ????????????????//抛出事件?
  30. ????????????????this.dispatchEvent(myEvent);?
  31. ????????????}?
  32. ????????]]>??
  33. ????</fx:Script>??
  34. ????<s:VGroup?horizontalAlign="center"?verticalAlign="middle"?width="80%"?height="200">??
  35. ????????<s:Label?text="我是子页面,父页面传过来的值为:"/>??
  36. ????????<s:Label?id="showLabel"?/>??
  37. ????????<s:TextInput?id="valueText"/>??
  38. ????????<s:Button?label="点击将值传递到父页面"?click="goBack()"/>??
  39. ????</s:VGroup>??
  40. </s:TitleWindow>??


最后上截图~

这样的方法,如果不用传递数据对象的话,只是需要标识的话,只需要在自定义事件里写不同的事件,然后手动触发不同的事件,根据触发不同的事件执行不同的方法即可。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读