[AS3]as3.0下currentTarget的用法示例
其实,开始用as3的时候,event.target 和 event.currentTarget 用的最多了。有的时候,感觉喜欢用哪个就用那个。没去总结。今天特意查了下别人的博客看了下,也测试了下。这里记录下来。
event.target、event.currentTarget,他们两个有什么区别呢?
简单说,target是事件的调用对象(event dispatcher),currentTarget是事件的处理对象(event processor)。
下边这个请记住了:
1.target 在事件流的目标阶段;currentTarget在事件流的捕获,目标及冒泡阶段。只有当事件流处在目标阶段的时候,两个的指向才是一样的,而当处于捕获 和冒泡阶段的时候,target指向被单击的对象而currentTarget指向当前事件活动的对象(一般为父级)。
2.currentTarget属性具备两条件:注册侦听器;正在处理事件。
3.真正的事件dispatch者是event.target,监听事件(addEventListner)的对象是event.currentTarget 。
下边,我贴出源码。
- package
- {
- import flash.display.Sprite;
- import flash.display.StageScaleMode;
- import flash.events.Event;
- import flash.events.MouseEvent;
- import flash.text.TextField;
- import flash.text.TextFormat;
- public class Main extends Sprite
- {
- public function Main()
- {
- addEventListener(Event.ADDED_TO_STAGE,addStageHandler);
- }
- private function addStageHandler(e:Event)
- {
- removeEventListener(Event.ADDED_TO_STAGE,addStageHandler);
- stage.scaleMode = StageScaleMode.NO_SCALE;
- var sp1=new Sprite();
- var sp2=new Sprite();
- sp1.addChild(sp2);
- addChild(sp1);
- sp1.name = "sp1";
- sp2.name = "sp2";
- drawRect(sp1,"0xff0000",200,0.5);
- drawRect(sp2,"0x00ff00",100,0.4,250);
- sp1.mouseEnabled=true;
- sp1.addEventListener(MouseEvent.CLICK,clickHandlerOne);
- sp2.addEventListener(MouseEvent.CLICK,clickHandlerTwo);
- }
- private function clickHandlerOne(e:MouseEvent)
- {
- trace("e.target.name:"+e.target.name);
- trace("e.currentTarget.name:"+e.currentTarget.name)
- }
- private function clickHandlerTwo(e:MouseEvent)
- {
- trace("sp2:e.target.name:"+e.target.name);
- trace("sp2:e.currentTarget.name:"+e.currentTarget.name);
- }
- private function drawRect(mc:Sprite,color,_width,_alpha,juli:int=0)
- {
- mc.graphics.lineStyle(1,0x3399ff,0.5);
- mc.graphics.beginFill(color);
- mc.graphics.drawRect(juli,0,_width,_width);
- mc.graphics.endFill();
- var txt:TextField=new TextField();
- var txtFormat:TextFormat=new TextFormat();
- txtFormat.size = 15;
- txt.mouseEnabled=false;
- txt.text = mc.name;
- txt.setTextFormat(txtFormat);
- if(mc.name=="sp1")
- {
- txt.x=mc.width-30;
- txt.y=mc.height/2-5;
- }
- else
- {
- txt.x=250;
- txt.y=5;
- }
- mc.addChild(txt);
- }
- }
- }
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例