Flex or JS Event Flow
Flex Event和JS Event一样,都存在一个事件流,这个事件流常常会导致一些啼笑皆非的Bug以及错误;
Event Flow
l Capturing:
事件捕获阶段,如果一个按钮B1放在一个Panel P1容器当中,当我们讲P1注册点击事件EP,将B1注册点击事件EB,Panel p1的父容器为Application app;
b1.addEventListener(MouseEvent.CLICK,e1);
p1.addEventListener(MouseEvent.CLICK,e2);
app.addEventListener(MouseEvent.CLICK,e3);
此时,当我们点击B1的时候,发现EP同时也会得到出发;
从Root元素到点击的元素,中间的所有b1->parent所注册的同类时间都会触发,这种从根到鼠标实际点击的目标元素的过程叫做事件的捕获;
App-----àp1----------
l Targeting
目标阶段:此时当经历了capturing阶段以后,事件流流经鼠标直接点击的目标元素,此时目标元素上监听的事件监听器被触发,此时表现为EB被触发;
l Bubbing:
冒泡阶段:顾名思义,此时,事件流经过一次迭代流经了目标元素DOM树上所有节点以后,开始以冒泡的形势,往回流经所有的元素;此时的过程与捕获阶段正好相反;
b1.addEventListener(MouseEvent.CLICK,e1);
p1.addEventListener(MouseEvent.CLICK,e2);
app.addEventListener(MouseEvent.CLICK,e3);
的正常顺序分别是触发 e1(目标阶段)--àe2(冒泡阶段)---àe3(冒泡阶段)
b1.addEventListener(MouseEvent.CLICK,e1);
p1.addEventListener(MouseEvent.CLICK,e2,true);
app.addEventListener(MouseEvent.CLICK,e3,true);
addEventListener的第三个参数为use_capture,默认为false,表示此事件监听器在捕获阶段不触发,此时如果设置为true,则事件触发顺序为:
e3(捕获阶段)-àe2(捕获阶段)àe1(目标阶段)
相关文档:
假设父窗口是p,子窗口是c,子窗口进行操作后返回父窗口
父窗口:
var flag:Boolean = false;
var c:pop = pop(PopUpManager.createPopUp(this,pop,false)); // 新建子窗体对象
c.callFunction = this.fresh; // 子窗体中可以调用的父窗体函数(这里是子窗体关闭时,用来刷新父窗体的内容
function fresh():void
  ......
一.通过js访问Flex组件
1.准备工作。先建立Flex工程 :fademo,并放置一个文本框:txtName。做完后代码应该类似于这个样子:
view plaincopy to clipboardprint?
·········10······· ......
flex弹出对话框示例程序分为两部分:Main.mxml和SimpleTitleWindowExample.mxml,其中Mail.mxml为主程序文件,SimpleTitleWindowExample.mxml为对话框文件,可以通过修改SimpleTitleWindowExample.mxml文件来修改对话框上的组件。
Main.mxml
<?xml version="1.0" encoding="ut ......
我们在用Flex进行开发的时候,有时候需要实现像html 细线表格的那种效果,原理很简单,但是需要一些技巧,不然的话很难控制线条的粗细,其实只需要设置几个样式就能搞定,一下是源码,大家可以运行一下看看效果<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml ......
两个不同的flex自定义控件怎么相互控制?
比如当在一个只有add方法的控件框mxml里,当提交成功的时候,怎么更新另外一个有datagird控件框的mxml?
就可以用如下方法:在主应用程序里面,对子控件datagird进行操作;
1、parentApplication.refreshAdmin(); //在add子控件
2、public ......