我用 Flex 编写了一个在浏览器中运行的小视频游戏。玩家通过按下键盘上的箭头按钮移动,所以我需要捕捉这些击键。事实上,当玩家按下其中一个键时,游戏动作就开始了。
为了捕捉击键,Flash/Flex 应用程序,而不仅仅是浏览器,需要有焦点。
如何确保应用程序具有焦点?我已经实现了一些技巧:必须单击“开始”按钮才能开始游戏。此按钮的唯一目的是确保应用程序具有焦点。有没有更好的解决方案?
不,这是唯一的方法,但我认为您目前的解决方案是一个很好的解决方案。您(作为用户)必须单击以聚焦的原因是,应用程序不能悄悄地窃取焦点,然后在您不知情的情况下记录击键,例如窃取密码。
在某些浏览器 (IE) 中,您可以通过 JavaScript 赋予 SWF 焦点。不幸的是,这在 Firefox 中不起作用。因此,一些用户将不得不单击 SWF 以使其获得焦点。你可以很容易地在你的游戏中检查浏览器,如果它是 IE,然后自动给 SWF 焦点而不显示“开始”按钮。然后在 Firefox 中显示“开始”按钮。