2013-08-06 80 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