从 TextField 移除焦点后如何刷新鼠标光标?
Posted
技术标签:
【中文标题】从 TextField 移除焦点后如何刷新鼠标光标?【英文标题】:How do I refresh the mouse cursor after I remove focus from a 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 状态,但无论我如何确保文本字段被禁用,它都不会自行消失,只有在我移动鼠标一点之后。
【问题讨论】:
【参考方案1】:您评论中的最简单答案:
所以我在摆弄你的建议,对于 lul,使用 Mouse.hide() 然后 Mouse.show() 并且它起作用了。删除了 hide(),它只适用于 Mouse.show()!猜猜它会刷新鼠标光标。不眨眼,完美运行
我原来的回答:
这是一种解决方法,但实施起来应该不会太难。希望有人提供本机 API 解决方案。
-
运行您发布的代码
然后让光标不可见
然后将自定义光标放在鼠标位置(如果您不介意光标消失,则可选)
在
MouseEvent.MOUSE_MOVE
上删除您的自定义光标,并使光标再次可见。
我怀疑您是否需要我为您编写此代码,但如果您认为此方法适合您,并且您在实施此技术时遇到问题,请告诉我。
如果您担心不同的系统具有不同的鼠标图标,然后会突然获得您的自定义图标,那么简单的解决方案就是始终使用您的自定义光标。您可以将其设计成您喜欢的样子;要么模仿 Windows 操作系统,要么使其独一无二。
【讨论】:
所以我在摆弄你的建议,对于 luls,使用 Mouse.hide() 然后 Mouse.show() 并且它起作用了。删除了 hide(),它只适用于 Mouse.show()!猜猜它会刷新鼠标光标。不眨眼,完美运行以上是关于从 TextField 移除焦点后如何刷新鼠标光标?的主要内容,如果未能解决你的问题,请参考以下文章
使用 .focused() 点击不同视图时如何删除 TextField 焦点?