//mc1下面包含mc2、mc3---mc3在mc2的下面 import
flash.events.MouseEvent; mc1.addEventListener(MouseEvent.CLICK,onClick); function
onClick(e:MouseEvent):void
{ trace(e.target.name); trace(e.currentTarget.name); //輸出mc3、mc1 //e.currentTarget
返回的是添加這個事件偵聽的對象本身 //e.target 返回的是當(dāng)前偵聽對象最底層的元件 }
===============================================
舉例:
你舉起你的拳頭,一拳揮出去!! 揮出去時的那個動作就是你發(fā)出的事件 ---- e:MouseEvent 那麼 你揮出去的是什麼呢 ?
是你沙鍋般大的拳頭 ---- e.target
具體問題具體分析;當(dāng)前目標(biāo) 在event事件中代表;點擊對象; loader事件:加載對象; e只是參數(shù),任意取值;對應(yīng)即可;
實際上用的最多的應(yīng)該是e.currentTarget,而很少用e.target,兩者的區(qū)別在于currentTarget總是指向執(zhí)行偵聽的對象,而target總是指向事件冒泡過程最深層的對象
event.target是發(fā)起事件的原始對象 event.currentTarget是事件在冒泡過程中的當(dāng)前對象
e.target 是目標(biāo)對象,e.event是目標(biāo)所發(fā)生的事件
例如:
在園中有一個字符串,其關(guān)系是字符在園上 當(dāng)拖動園時字符要隨著園的移動而移動,就需要用 evt.currentTarget
(傳遞的是整個對象)來傳遞所有所對象,而用 evt:target 則只能點擊時的那個對象,而字符對象沒有傳遞,因而會報錯。
package { import flash.display.Sprite; import
flash.text.TextField; import flash.events.MouseEvent; import
flash.events.*;
public class pz3 extends Sprite { public function
pz3() { var sp:Sprite = new
Sprite(); sp.graphics.beginFill(0x00ffcc); sp.graphics.drawCircle(0,0,90); sp.graphics.endFill(); addChild(sp); sp.x
= 100; sp.y = 100; var tt:TextField = new TextField(); tt.text
= "sadsadasdasda"; tt.selectable =
false; sp.addChild(tt); sp.addEventListener(MouseEvent.MOUSE_DOWN,p1); /*sp.addEventListener(MouseEvent.MOUSE_MOVE,p1)*/ sp.addEventListener(MouseEvent.MOUSE_UP,p2); function
p1(evt:MouseEvent):void { trace(evt.currentTarget); evt.currentTarget.startDrag(); } function
p2(evt:MouseEvent):void { evt.currentTarget.stopDrag(); } }
}
}
|