【问题标题】:How do I refresh the mouse cursor after I remove focus from a TextField?从 TextField 移除焦点后如何刷新鼠标光标?
【发布时间】:2017-03-31 08:39:33
【问题描述】:

如果用户键入 ESC 或 ENTER,或者将焦点放在其他地方,我想删除文本字段上的焦点和选择。因此我这样做:

        stage.focus = null;

        textField.type = TextFieldType.DYNAMIC;
        textField.selectable = false;
        textField.mouseEnabled = false;

问题是,如果鼠标在可编辑文本字段上,鼠标处于 IBEAM 模式(插入光标)并保持在 IBEAM 模式,即使在上面的命令之后,直到我稍微移动鼠标,此时它返回到 AUTO 状态。

我想强制鼠标更新自身并满足 AUTO 状态,但无论我如何确保文本字段被禁用,它都不会自行消失,只有在我移动鼠标一点之后。

【问题讨论】:

    标签: actionscript-3 actionscript air


    【解决方案1】:

    您评论中的最简单答案:

    所以我在摆弄你的建议,对于 lul,使用 Mouse.hide() 然后 Mouse.show() 并且它起作用了。删除了 hide(),它只适用于 Mouse.show()!猜猜它会刷新鼠标光标。不眨眼,完美运行

    我原来的回答:

    这是一种解决方法,但实施起来应该不会太难。希望有人提供本机 API 解决方案。

    1. 运行您发布的代码
    2. 然后让光标不可见
    3. 然后将自定义光标放在鼠标位置(如果您不介意光标消失,则可选)
    4. MouseEvent.MOUSE_MOVE 上删除您的自定义光标,并使光标再次可见。

    我怀疑您是否需要我为您编写此代码,但如果您认为此方法适合您,并且您在实施此技术时遇到问题,请告诉我。

    如果您担心不同的系统具有不同的鼠标图标,然后会突然获得您的自定义图标,那么简单的解决方案就是始终使用您的自定义光标。您可以将其设计成您喜欢的样子;要么模仿 Windows 操作系统,要么使其独一无二。

    【讨论】:

    • 所以我在摆弄你的建议,对于 luls,使用 Mouse.hide() 然后 Mouse.show() 并且它起作用了。删除了 hide(),它只适用于 Mouse.show()!猜猜它会刷新鼠标光标。不眨眼,完美运行
    猜你喜欢
    • 1970-01-01
    • 2019-06-06
    • 2019-11-30
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多