【问题标题】:Focus issue in AS3AS3 中的焦点问题
【发布时间】:2023-04-09 04:59:01
【问题描述】:

我在 tlftextfield 中有一个默认文本,当第一次(!)单击它以输入一些自己的文本时,该默认文本将被删除。但是,当我将函数附加到 FocusEvent.FOCUS_IN 时,文本字段会失去焦点。这是我目前拥有的:

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);

我在这里错过了什么?

【问题讨论】:

    标签: actionscript-3 flash focus textfield


    【解决方案1】:

    您正在使用交互管理器 (ISelectionManager) 的 setFocus() 方法。请注意,documentation says 此方法用于将焦点设置在包含所选文本的容器上。

    此方法专门作用于您使用鼠标选择的文本。在您的场景中,没有选定的文本。

    因此,只需使用 usual means to focus an object。在你的情况下:

    stage.focus = InteractiveObject(event.currentTarget); 
    

    【讨论】:

    • 谢谢,苏尼尔。但是,这也不起作用:“将具有静态类型 Object 的值隐式强制转换为可能不相关的类型 flash.display:InteractiveObject。”当我将它转换为交互式对象时,它会运行(编译时没有错误)但也不起作用。有什么建议吗?
    • 哎呀,我的错!您肯定需要将event.currentTarget 转换为InteractiveObject。为了帮助理解为什么它在那之后不起作用,你能确认event.currentTarget 是什么吗?和/或展示你如何附加事件监听器?最后,如果您有对文本字段的引用,您可以尝试将其聚焦:stage.focus = myTextField
    • 感谢 Sunil,感谢您一直以来的支持,非常感谢。我已经按照您的建议更改了代码,但仍然没有成功。您可以通过rexmedicus.com/assets/diagnosendose.swf 在线查看 swf,然后等到一个棕色笔记本出现,上面写着“Differentialdiagnose?”和“Untersuchungen?”。这些是有问题的文本字段。当您单击它们时,文本会消失,但焦点不正确,因此您必须再次单击才能写入。很奇怪。
    猜你喜欢
    • 1970-01-01
    • 2011-03-07
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    相关资源
    最近更新 更多