在我的Flex 4.9.1应用程序中,在某个特定点上,我放了一块玻璃"在整个舞台上。它的目的是捕获所有鼠标点击,直到用户按下退出键,然后将其删除。这部分很简单,效果很好。它只是一个FlexSprite,由systemManager提供,它在整个屏幕上绘制透明像素。
问题是,无论在放置玻璃之前焦点在哪里,或者即使stage.focus设置为null,用户也可以按Tab键并将文本输入焦点放在玻璃下面,然后输入文本进入他们。
我尝试在systemManager上侦听KEY_UP和KEY_DOWN事件,useCapture = true,并且可能的最高优先级(0x7FFFFF)。当我得到事件时,我会调用stopPropagation(),stopImmediatePropagation()和preventDefault()(即使事件不可取消)。什么都行不通。无论如何,多次按Tab键会使文本域成为焦点,输入字母会将文本输入到字段中。
因此看起来文本字段实际上并不受它们发送的关键事件的控制,就像在实际调度事件之前输入文本一样。因为据推测,如果他们是,他们会在事件流的目标阶段倾听。至于tab键,我不知道为什么停止它的传播并不能阻止焦点切换。
有没有人完成我之前想要完成的事情?什么情况有效?
答案 0 :(得分:0)
当“玻璃板”启动时,您可以使用Application.application.enabled = false;
禁用顶层应用程序下的所有控件。
有关详细信息,请参阅this answer。