·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3.0下currentTarget的用法示例

时间:2013-10-29 15:35cuplayer.com
vent.target、event.currentTarget,他们两个有什么区别呢?简单说,target是事件的调用对象(event dispatcher),currentTarget是事件的处理对象(event processor)。

其实,开始用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 。

下边,我贴出源码。

  1. package  
  2.     import flash.display.Sprite; 
  3.     import flash.display.StageScaleMode; 
  4.     import flash.events.Event; 
  5.     import flash.events.MouseEvent; 
  6.     import flash.text.TextField; 
  7.     import flash.text.TextFormat; 
  8.  
  9.     public class Main extends Sprite 
  10.     { 
  11.         public function Main() 
  12.         { 
  13.             addEventListener(Event.ADDED_TO_STAGE,addStageHandler); 
  14.         } 
  15.         private function addStageHandler(e:Event) 
  16.         { 
  17.             removeEventListener(Event.ADDED_TO_STAGE,addStageHandler); 
  18.             stage.scaleMode = StageScaleMode.NO_SCALE; 
  19.             var sp1=new Sprite(); 
  20.             var sp2=new Sprite(); 
  21.             sp1.addChild(sp2); 
  22.             addChild(sp1); 
  23.             sp1.name = "sp1"
  24.             sp2.name = "sp2"
  25.             drawRect(sp1,"0xff0000",200,0.5); 
  26.             drawRect(sp2,"0x00ff00",100,0.4,250); 
  27.               
  28.             sp1.mouseEnabled=true
  29.             sp1.addEventListener(MouseEvent.CLICK,clickHandlerOne); 
  30.             sp2.addEventListener(MouseEvent.CLICK,clickHandlerTwo); 
  31.         } 
  32.  
  33.         private function clickHandlerOne(e:MouseEvent) 
  34.         { 
  35.             trace("e.target.name:"+e.target.name); 
  36.             trace("e.currentTarget.name:"+e.currentTarget.name) 
  37.         } 
  38.  
  39.         private function clickHandlerTwo(e:MouseEvent) 
  40.         { 
  41.             trace("sp2:e.target.name:"+e.target.name); 
  42.             trace("sp2:e.currentTarget.name:"+e.currentTarget.name); 
  43.         } 
  44.  
  45.         private function drawRect(mc:Sprite,color,_width,_alpha,juli:int=0
  46.         { 
  47.             mc.graphics.lineStyle(1,0x3399ff,0.5); 
  48.             mc.graphics.beginFill(color); 
  49.             mc.graphics.drawRect(juli,0,_width,_width); 
  50.             mc.graphics.endFill(); 
  51.             var txt:TextField=new TextField(); 
  52.             var txtFormat:TextFormat=new TextFormat(); 
  53.             txtFormat.size = 15
  54.             txt.mouseEnabled=false
  55.             txt.text = mc.name; 
  56.             txt.setTextFormat(txtFormat); 
  57.             if(mc.name=="sp1") 
  58.             { 
  59.                 txt.x=mc.width-30; 
  60.                 txt.y=mc.height/2-5; 
  61.             } 
  62.             else 
  63.             { 
  64.                 txt.x=250
  65.                 txt.y=5
  66.             } 
  67.             mc.addChild(txt); 
  68.         } 
  69.     } 
  70.  

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器