2009-11-11 90 views
1

我正在为作业创建一个类似DDR的游戏,并且我的键盘似乎会响应并跟踪它,但前提是先按下鼠标在屏幕上。ActionScript 3中的按键问题

我该如何摆脱这一点,只是立即响应?

  • right_mc是在动
  • ArrowRight_mc在顶部
  • perfect_mc箭头应该弹出简要
  • 的箭头,所以应该发光的箭头的地方命中。

    if(rightDown){ 
        trace("right arrow"); 
        if(right_mc){ 
         if(right_mc.y >= ArrowRight_mc.y){ 
          perfect_mc.visible = true; 
          glowRight_mc.visible = true; 
         } 
        } 
    } 
    
+0

标记正确的答案会很好! – 2012-01-10 07:43:33

回答

0

这里的问题是,嵌入的SWF文件不具有焦点时,屏幕第一次加载。您可以使用JavaScript为其指定焦点,但根据我的经验,由于浏览器解释JS的方式不同,这并不总是100%的时间。很多人做的是在游戏加载后有一个大的START按钮,这样玩家必须点击SWF才能开始游戏。有些网站甚至使用JS来检测游戏何时失去焦点,并会暂停游戏并提醒用户。

我想我还没有完全回答你的问题,因为我对JavaScript并不是很了不起,但是我希望这能指出你正确的方向。

+0

仅供参考:您也可以在Flash客户端失去焦点时触发事件,无需为此使用JavaScript。 – Tom 2009-11-12 10:13:56

4

这对Flash开发者来说是一个长期存在的问题。 闪存需要键盘焦点才能检测到键盘事件

问题是,只有当用户点击SWF内的某个位置时,浏览器才会将焦点留给SWF。这确实是有道理的。我不希望我所在的网页失去焦点,只是因为在某处嵌入了Flash电影。这是一项安全功能,用于阻止Flash横幅广告等静音键盘记录器。然而,有些例子强调焦点是有意义的,例如一个Flash游戏,它是HTML页面上唯一的一个。

通常最好的做法是有一个“播放”按钮的开始菜单屏幕。这迫使用户在不知道这个“焦点问题”的情况下点击SWF。

有更多的信息在Adobe Technote - Giving keyboard focus to an embedded Flash movie

***编辑**** Flash是否有焦点,只影响键盘事件。它不会影响正在运行的代码,正在播放的影片剪辑或正在播放的声音/视频。

0

回应你的评论... 我不清楚的东西。如果你不得不点击开始播放歌曲,那么你已经点击了SWF,你应该得到键盘事件,对吧?所以如果你不得不点击开始然后再点击,也许你需要确保你的鼠标监听器在你的显示列表的根目录下。

// in your document class/main AS file... 
this.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown); 

或者您可能需要在EnterFrame循环期间轮询输入而不是监听关键事件。

+0

以下四个都在构造函数中。 home_btn.addEventListener(MouseEvent.CLICK,home); menu_btn.addEventListener(MouseEvent.CLICK,菜单; \t \t \t \t stage.addEventListener(KeyboardEvent.KEY_UP,的onkeyup); stage.addEventListener(KeyboardEvent.KEY_DOWN,onkeydown事件); ,所以我不知道是什么原因引起的。你已经点击一次进入菜单,然后你再次点击5个按钮之一。 非常感谢! – May 2009-11-11 21:12:52

+0

ps抱歉的格式,不知道如何解决它。 – May 2009-11-11 21:13:46

0

我知道你的意思。在键盘事件触发前,舞台上需要焦点的特定对象。我在这里遇到与游戏相同的问题。精灵需要通过键盘箭头移动,但容器需要关注,因此它会响应。我只是将要移动的对象设置为tabEnabled,因为我的需求仅用于可访问性目的,因此首先将对象挂接到对象将使其具有键盘控制权。