我正在应用内部实现一个文本显示区域,当用户将鼠标悬停在四个元素之一上时,该区域会显示所选文本。我想获取调用处理程序的实例的名称,而不是为每个元素创建一个处理函数,以实现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
。那么如何将名称值应用于变量以确定要显示的文本块?
答案 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,它就应该有效。