2011-04-16 40 views
2

我正在實現應用程序內的文本顯示區域,當用戶將鼠標移動到四個元素中的一個上時,該區域顯示所選文本。我不想爲每個元素創建一個處理函數,而是希望獲取調用處理函數的實例的名稱以實現switch語句。我試了兩種方式,但都不起作用:獲取事件目標的名稱值-AS3

//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(); 

這兩個都返回未定義的變量名稱。但是,在調試器中,我可以通過currentTarget.name跟蹤事件值,並顯示觸發處理函數的實例,無論是withdrawalText, initialText or timeText。那麼,如何將名稱值應用於變量以確定要顯示哪個文本塊?

回答

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,它就應該工作。