2013-08-06 81 views
0

我在tlftextfield中有一個默認文本,當第一個(!)單擊它以輸入一些自己的文本時,它將被刪除。然而,當我將一個函數附加到FocusEvent.FOCUS_IN時,textfield失去了焦點。這是我的時刻:AS3中的焦點問題

function clearField(event:FocusEvent) { 
    if (event.currentTarget.text == defaultText[event.currentTarget.name]) { 
     event.currentTarget.text=""; 
     event.currentTarget.textFlow.interactionManager.setFocus(); 
    } 
} 

附加處理程序如下:

rmDiagnose.txtDiagnose.addEventListener(FocusEvent.FOCUS_IN, clearField); 

缺少什麼我在這裏?

回答

1

您正在使用交互管理器的setFocus()方法(ISelectionManager)。請注意,documentation says此方法用於將注意力集中在包含選定文本的容器上。

此方法專門用於您用鼠標選擇的文本。在你的場景中,沒有選定的文本。因此,只需使用usual means to focus an object即可。在你的情況下:

stage.focus = InteractiveObject(event.currentTarget); 
+0

謝謝,Sunil。但是,這也不起作用:「將靜態類型Object的值隱式強制爲可能不相關的類型flash.display:InteractiveObject。」當我將它轉換爲交互式對象時,它會運行(編譯時無錯誤),但也不起作用。有什麼建議麼? – Jan

+0

奧普斯,我的壞!你一定需要將'event.currentTarget'強制轉換爲'InteractiveObject'。爲了幫助理解之後爲什麼它不起作用,你能確認一下'event.currentTarget'是什麼嗎?和/或顯示你如何附加事件監聽器?最後,如果您有對文本字段的引用,則可以嘗試將其重點放在:'stage.focus = myTextField'。 –

+0

感謝Sunil,對於您的持續支持,非常感謝。我已經改變了你的建議,但仍然沒有成功。您可以在http://www.rexmedicus.com/assets/diagnosendose.swf在線查看swf,並等到一個棕色筆記本出現「Differentialdiagnosen?」。和「Untersuchungen?」。這些是有問題的文本框。當你點擊它們時,文本消失,但焦點不正確,因此你必須再次點擊以寫入某物。奇怪的。 – Jan