2013-07-03 40 views
2

我是AS3的新手,正試圖通過使用簡單的getValue函數從鼠標單擊中獲取目標名稱,但我得到錯誤1067:隱式強制一個類型爲void的值給一個不相關的String類型。我不確定我做錯了什麼。試圖從AS3中的鼠標事件返回目標名稱

var _userInput:String = new String(); 
_userInput = btn_0.addEventListener(MouseEvent.CLICK, getValue); 

function getValue(e:MouseEvent):String{ 
    return e.target.name; 
} 

這可能是一個簡單的錯誤,我正在做,但我沒有看到它是什麼。提前致謝。

+0

如果你想想看,回報會去到事件調度,而不是字符串。 – Pier

回答

2

實例名稱你不能真正做到這樣,因爲返回的addEventListener無效類型的偵聽器函數返回(字符串)。

[Bindable] var targetName:String; 

var _userInput:String = new String(); 
_userInput = targetName; 
btn_0.addEventListener(MouseEvent.CLICK, getValue); 

function getValue(e:MouseEvent):void{ 
targetName = e.target.name; 
} 
+0

謝謝我會把這些文件作爲一個教訓吸取。 :-) – seroth

0

假設你已經給你的按鈕的btn_0

var _userInput:String; 

btn_0.addEventListener(MouseEvent.CLICK, getValue); 

function getValue(e:MouseEvent):void{ 
_userInput = e.target.name; 
trace(_userInput); 
} 
+0

因此唯一可以來自MouseEvent事件偵聽器的簽名是無效的?我不能設置函數返回任何值? – seroth

+1

您必須瞭解這些事件在actionscript中的工作方式。即使getValue函數要返回某個東西,除非您自己調用該函數(這會殺死事件的目的),否則您將無法獲得結果。 在你的情況下,你嘗試將函數addEventListener的返回值分配給一個變量,而不是你的回調函數。 addEventListener函數不返回值,因此是錯誤。 閱讀本文以更好地瞭解事件系統: [鏈接](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/EventDispatcher.html) –

1
btn_0.mouseChildren=false 
btn_0.addEventListener(MouseEvent.CLICK, getValue); 

function getValue(e:MouseEvent):void{ 
    trace(e.target.name); 
} 
+1

您可以提供一些解釋,以便與此代碼更改,以便其他人可以瞭解如何解決將來類似的問題。 – Edd

+0

就像原來的問題一樣。添加btn_0.mouseChildren = false以禁用點擊目標的子項。這給你e.target的btn_0而不是btn_0中的其他元素。所以使用e.target.name工作。在這裏閱讀更多信息http://www.thoughtprocessinteractive.com/blog/the-power-and-genius-of-mousechildren-and-mouseenabled –