2013-02-05 41 views
1

在我的程序中,我需要動態地創建按鈕及其監聽器。有沒有辦法確定哪個按鈕觸發了事件。每個按鈕都包含一個獨特的文本,但我嘗試使用「this」來訪問文本,但不成功。請幫忙提供 一段代碼:識別觸發事件的按鈕(在as3中動態添加按鈕)?

for(i=0;i<3;i++) 
{ 
    subjectCode="MTOO"+(i+1); 
    var subjectBtn:MovieClip=new subjectButton(); 
    subjectBtn.y=y+50+pos; 
    subjectBtn.x=60; 
    subjectBtn.subjCode.text=subjectCode; 
    subjectBtn.addEventListener(MouseEvent.CLICK, displaySubjectAttendance); 
    _subList.addChild(subjectBtn); 
    pos+=140; 
} 
+0

更需要說明你的movieclip結構。還有一些更具體的問題寫出來。你想區分每個按鈕一個eventlistenerHandler(displaySubjectAttendance)嗎? –

回答

1
// This is how I will access the text in the event handler: 

function displaySubjectAttendance(event:MouseEvent):void { 
    subjectButton(event.currentTarget).subjCode.text 
} 
+2

如果你想確定你指的是註冊監聽器的按鈕而不是按鈕中的文本,你應該使用event.currentTarget。 – bwroga

+0

這是爲什麼被拒絕? – bwroga

+0

也許是因爲它是錯的? – strah

1

您可以在事件監聽器作爲evt.currentTarget訪問按鈕。

function displaySubjectAttendance(evt:MouseEvent):void { 
    var button:MovieClip = evt.currentTarget as MovieClip; 
} 
+0

非常感謝你的解決方案,它的工作原理: ) – user2043188