焦点问题,焦点有时会转向未知对象

时间:2009-02-12 14:50:35

标签: actionscript-3 flex3

  

[FocusEvent type =“focusIn”bubbles = true cancelable = false eventPhase = 3 relatedObject = null shiftKey = false keyCode = 0]

当我用鼠标单击TextField时,我希望另一个(可编辑的)字段获得焦点,但目前焦点在某处丢失了......我不知道焦点在哪里。

我为textfield做了一个监听器,试图将焦点设置回stage.focus = editfield的另一个文件但是它不起作用。

我在舞台上也有同样的焦点听众,但没有区别。

1 个答案:

答案 0 :(得分:1)

由于您在示例中列出了“FocusEvent”,因此我将重点关注Flex解​​决方案。那不是Flash AS3类。

我会打赌,Flex正在试图自己管理焦点,这就是你试图设置它。然而,有很多方法可以解决这个问题。

Flex试图对你不利吗?
首先,你可能想要使用FocusManager类或UIComponent setFocus方法(这取决于你特别需要做什么,我相信FocusManager允许你有多个目标,而setFocus方法更简单)而不是stage.focus。这有利于在Flex组件系统中本地工作。

您是否正在听正确的活动?
如果做不到这一点,请尝试确保您正在寻找的FocusEvent的目标既不是您的文本字段也不是文本字段的子项。 (只为了理智)。如果这不起作用,请确保您只调度一次事件。接下来,我会尝试使用MouseEvent.CLICK而不是FocusEvent。

其他一切都失败了吗?
不幸的是,Flex往往远非完美。我发现有时候我必须使用setTimeout来解决这个事实:它不会以“正确的顺序”触发事件 - 你调整了一些东西,但是在重新渲染之前调度了“RESIZE”,你改变了字体,并且TextArea的TextWidth属性不返回正确的数字。解决方法

private function myListener( event:FocusEvent ):null
{
    setTimeout( function(){ editfield.setFocus(); }, 35 );
}