获取事件目标-AS3的名称值

时间:2011-04-16 13:02:00

标签: actionscript-3 event-handling

我正在应用内部实现一个文本显示区域,当用户将鼠标悬停在四个元素之一上时,该区域会显示所选文本。我想获取调用处理程序的实例的名称,而不是为每个元素创建一个处理函数,以实现switch语句。我尝试了两种方法,但两种方法都不起作用:

//install event handlers
initialText.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
timeText.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
withdrawalText.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);


//also tried without toString, same result
var name:String= evt.target.name.toString();
var name=String= evt.currentTarget.name.toString();

这两个都为变量名返回undefined。但是,在调试器中,我可以通过currentTarget.name跟踪事件值,并显示触发处理函数的实例,无论它是withdrawalText, initialText or timeText。那么如何将名称值应用于变量以确定要显示的文本块?

1 个答案:

答案 0 :(得分:5)

for each (var field:TextField in [initialText, timeText, withdrawlText])
         field.addEventListener(MouseEvent.MOUSE_OVER, mouseOverEventHandler);

function mouseOverEventHandler(evt:MouseEvent):void
{
switch (evt.currentTarget)
       {
       case initialText:      /*initialText specific code*/       break;
       case timeText:         /*timeText specific code*/          break;
       case withdrawalText:   /*withdrawalText specific code*/
       }
}

这是未经测试的,但只要文本字段实例变量的范围达到mouseOverHandler,它就应该有效。