- 浏览: 85010 次
- 性别:
- 来自: 北京
最新评论
-
A5121612886:
好文要顶!
Flash Builder 编译器选项 -
谁在哀伤望月:
非常好,谢谢分享
Flash builder4 插件终极破解方法
在事件处理过程中,会自动生成事件类的实例,并传给侦听器函数。通过这个参数就可以使用事件类的属性和方法。其中target与currentTarget属性是两个很相似的属性。
对于简单的事件处理过程,分清target与currentTarget并没有必要。因为它们一般指向同一个对象。例如,舞台中有一个实例名为mc的影片剪辑实例,通过下面的代码为这个实例注册单击事件。
mc.addEventListener(MouseEvent.CLICK,this.test);
function test(e:MouseEvent)
{
trace(e.target.name,e.currentTarget.name);
}
输出结果是一样的,target与currentTarget属性都是引用舞台中的影片剪辑实例。但在一个相对复杂的显示列表中,这两个属性是不相同的。
下面通过例子来了解target与currentTarget属性的异同
1、新建Flash文档
2、改图层1名为as,单击图层的第1帧,打开动作面板,输入代码: var sp1:Sprite=new Sprite() ;
var sp2:Sprite=new Sprite() ;
this.addChild(sp1) ;
sp1.addChild(sp2) ;
drawRect(sp1,0xff0000,200) ;
drawRect(sp2,0x0000FF,100);
//绘制矩形
function drawRect(obj:DisplayObject,c:uint,l:int):void;
{
obj.graphics.beginFill(c) ;
obj.graphics.drawRect(0,0,l,l) ;
}
上面的代码在主时间轴中创建了Sprite类的实例sp1,在sp1实例内又创建了Sprite类的实例sp2。如果为父级sp1注册一个单击事件侦听
器,当单击sp1时,target与currentTarget都指向sp1,当单击sp2时,target指向sp2,而currentTarget指
向sp1。因此在很多应用中,一般认为currentTarget指向父级。代码如下: sp1.name=”sp1″;
sp2.name=”sp2″;
sp1.addEventListener(MouseEvent.CLICK,clickFunc);
function clickFunc(e:MouseEvent):void
{
trace(e.target.name,e.currentTarget.name);
}
3、测试影片,分别单击大小矩形,查看信息
如果为子级和父级都注册一个侦听器,那target属性是指单击的目标,而currentTarget属性是指在处理的事件即活动目标,因为3.0的事
件处理有捕获、目标、冒泡3个阶段,并且默认时采用冒泡机制,当单击子级时,currentTarget属性应先指向目标,并向上冒泡,就是先指向
sp2,再指向sp1。
为程序增加sp2注册事件侦听器: sp1.addEventListener(MouseEvent.CLICK,clickFunc);
sp2.addEventListener(MouseEvent.CLICK,clickFunc);
function clickFunc(e:MouseEvent):void
{
trace(e.target.name,e.currentTarget.name);
}
因此,currentTarget属性应具备两个条件,一是它注册了侦听器,二是正在处理事件,而target属性就指事件流中的目标,例如,单击了sp2,不管事件如何冒泡或说不管currentTarget指向谁,target都指向sp2。
target属性在事件流的目标阶段,而currentTarget属性在事件流的冒泡阶段、目标阶段和捕获阶段。以单击事件为例,只有事件流处于目标
阶段时,currentTarget属性与target属性的指向才相同,当事件流处于冒泡阶段和捕获阶段时,target属性总是指向被单击的对象,而
currentTarget属性指向当前事件活动的对象。
即使在没有发生事件流的处理时,有时也需区别target和currentTarget属性,比如在舞台中创建mc1,在mc1中又创建mc2,且mc2位于mc1的上面。
当对父级对象即mc1处理事件时,使用下面的代码1: mc1.addEventListener(MouseEvent.CLICK,fun)
function fun(e:MouseEvent)
{
trace(e.target.name)
}
测试影片时,单击mc1,输出mc1,单击mc2,则输出mc2。如果要使用e.target属性始终指向mc1,可以使用容器对象的mouseChildren属性:
mc1.mouseChildren = false;
当mc1的mouseChildren属性被设置成 false后,mc1的子级对象将不能处理鼠标事件,此时不管单击mc1还是mc2输出的都是mc1。代码2: mc1.mouseChildren=false
mc1.addEventListener(MouseEvent.CLICK,fun)
function fun(e:MouseEvent)
{
trace(e.target.name)
}
由于currentTarget属性指向当前事件活动的对象,而mc1注册了单击事件,mc2没有注册单击事件,即mc1的事件是活动的。因此不管单击mc1还是mc2,currentTarget属性肯定指向mc1。
代码3; mc1.addEventListener(MouseEvent.CLICK,fun)
function fun(e:MouseEvent)
{
trace(e.currentTarget.name)
}
发表评论
-
全面提升你的程序效率 之细说 bitmapdata AS3 Bitmap 抠图(透明部分)和碰撞(点击)检测
2012-06-05 09:54 7177如果你是刚接触as编程 ... -
AS3动态获得类名及类的方法
2012-05-08 13:50 28141.获得某个实例对象的类名:getQualifiedClass ... -
Flash Builder 编译器选项
2012-05-02 10:30 6388-benchmark 输出性 ... -
【AS3】为什么AS3.0事件流机制会有捕获阶段、目标阶段、冒泡阶段三个阶段
2012-04-26 10:03 3823原问题:事件机制有三个步骤,捕获,目标和冒泡。请问,在目标阶段 ... -
[AS3]事件流那点事儿
2012-04-26 09:36 1235在群里有人问了个问 ... -
Socket+AMF3粘包问题
2012-04-17 10:05 1804问题: 服务端Mina 前台接收Flex 参照的 ... -
ActionScript垃圾回收
2012-04-12 15:04 1401在《给AS程序员的一点建议一文 》中我提到了释放资源的重 ... -
updateAfterEvent的作用
2012-04-10 17:26 1231flash中一共有三个类具 ... -
深入理解flash重绘
2012-04-10 17:21 1173Flash Player 会以SWF内 ... -
[AS3]registerClassAlias的用法
2012-03-20 10:35 1083registerClassAlias在利用AMF3进行序列话网 ... -
navigateToURL
2012-03-09 15:51 1162navigateToURL整理总结一些关于navigate ... -
flash中cacheAsBitmap的使用
2012-03-09 11:59 815缓存显示对象 如果 Flash 中的设计尺寸增大,无论创建 ... -
Debug和Release之本质区别
2012-02-27 11:41 1172关于Debug和Release之本质区别 使用条件编译来完成区 ... -
AS3中super的用法[转自A闪]
2012-02-13 10:19 1226super它到底是什么?这是我第一个问题,在帮助中石这样说明的 ... -
AS3.0的Dictionary类
2012-02-10 11:00 816AS3中的Dictionary类(flash. ... -
AS3中public internal private protected的区别
2012-02-10 10:43 2533protected Java與AS3中的 ... -
面试题目
2011-08-17 16:31 8741.as2与as3.的最主要区别 ... -
AS3事件类型
2011-05-18 09:54 1491Event事件类型: ACTIVATE 激活事件 ... -
关于强制类型转换
2011-05-09 09:59 753每一种编程语言都提供强制类型转换,允许你将某一种数据类型转换成 ... -
DisplayObjectContainer to MovieClip
2011-05-09 09:38 785package gameTool { import fl ...
相关推荐
NULL 博文链接:https://rainbow702.iteye.com/blog/1668953
深入了解as3事件流,阐明target和currentTarget属性的区别与应用
在小程序中,e.target与e.currentTarget是非常重要的,尤其是涉及到页面传值时 currentTarget和target都是组件的一些属性值集合,由“data-属性名”定义的一些属性值 currentTarget:事件触发的当前事件(当前事件,...
target在事件流的目标阶段;...只有当事件流处在目标阶段的时候,两个的指向才是一样的,而当处于捕获和冒泡阶段的时候,target指向被单击的对象而currentTarget指向当前事件活动的对象(一般为父级)。
今天小编就为大家分享一篇关于js中innerText/textContent和innerHTML与target和currentTarget的区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
在小程序的事件回调触发时,会接收一个事件对象,事件对象的参数中包含一个target和currentTarget属性,接下来说说这二者的区别。 首先上代码: wxml部分: 父组件 子组件 wxss部分: #tar-father{ width: ...
event.currentTarget identifies the current target for the event, as the event traverses the DOM. It always refers to the element the event handler has been attached to as opposed to event.target which...
主要介绍了微信小程序 e.target与e.currentTarget的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
此往篇文档非常清淅的讲解在flex中的事件机制,告诉你target与currenttarget的区别
使用$event传递参数(事件本身) <input v-model="checknames" @change="changecheckbox(item,$event)" style="float: right" type=...以上这篇vue绑定事件后获取绑定事件中的this方法就是小编分享给大家的全部内容了
后来发现e对象有currentTarget和target属性,而dataset就在currentTarget中,所以通过e.currentTarget.dataset.id取到了正确的值。 另外data-id="1"最好不要用驼峰命名如:data-Id="1" ,这样有时候也取不到值。 ...
firefox 的 event.currentTarget 和 ie 的 document.activeElement 这两个完全含义不一致的对象却被捆绑在一起做成了浏览器兼容代码。 大家在google搜索的时候 都会发现 document.activeElement || event....
区分事件的target和currentTarget 停止事件传播 课程说明 什么是事件冒泡? 当元素嵌套在DOM中时,DOM需要一种方法来确定应该触发事件的元素。 如果在外部元素(绿色框)上设置了单击事件侦听器,是否在内部...
主要为大家详细介绍了易被忽视的js事件问题,包括跨平台事件、冒泡中target和currentTarget的区别,感兴趣的朋友可以参考一下
currentTarget 指添加事件handler的元素本身,如el.addEventListener中el就是currentTarget。IE6/7/8没有对应属性,可在handler内使用this来替代如evt.currentTarget = this。relativeTarget 指事件相关的元素,一般...
javascript currentTarget对象介绍