防止在 Flash AS2 事件处理程序中使用箭头键更改焦点?

Posted

技术标签:

【中文标题】防止在 Flash AS2 事件处理程序中使用箭头键更改焦点?【英文标题】:Prevent focus change with arrow keys in Flash AS2 event handler? 【发布时间】:2017-03-17 08:42:08 【问题描述】:

我在工作中继承了一些旧的 Flash 媒体。客户提出的要求以及时间限制规定我们不能使用高于为 Flash Player 9 和 ActionScript 2.0 设置的发布设置的任何内容。

我有一个用作计时器栏的组件,我试图在按下左或右箭头键时让它快退或快进 5 秒,以方便访问。但是,在 keydown 处理程序触发后,左右箭头键会将键盘焦点移动到下一个或上一个可选项卡项。

我怎样才能阻止这种情况?使用 AS3 或 javascript,我可以调用 Event.preventDefault(),我很确定这会解决问题,但我在 AS2 中似乎没有这种奢侈。

【问题讨论】:

【参考方案1】:

至少目前,我最终解决这个问题的方法是将搜索栏的_focusRect 属性设置为false,然后添加onKillFocusonSetFocus 处理程序以删除和添加发光过滤到看起来像黄色轮廓的它。 _focusRect = false 达到了我的需要,因为它阻止了箭头键转移焦点,但我仍然可以使用 Tab 键进入和退出对象。来自documentation for MovieClip._focusRect

如果 _focusrect 属性设置为 false,则该影片剪辑的键盘导航仅限于 Tab 键。所有其他键,包括 Enter 和箭头键,都将被忽略。要恢复全键盘导航,您必须将 _focusrect 设置为 true。

唯一的问题是,在执行此操作时,您需要确保为可能被视为理所当然的交互添加自己的处理程序,例如按 Enter 或 Space。

【讨论】:

以上是关于防止在 Flash AS2 事件处理程序中使用箭头键更改焦点?的主要内容,如果未能解决你的问题,请参考以下文章

AS2上的按键改变符号的框架

Adobe Flash CC 发布到 AS2

使用 AS2 在 flash 上引入 php 变量的简单方法

当我按下 QSpinbox 中的箭头时,如何防止双 valueChanged 事件?

AS2 ExternalInterface:错误:引发了无效异常

防止焦点 div 使用箭头键滚动