2009-11-11 87 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,因爲我的需求僅用於可訪問性目的,因此首先將對象掛接到對象將使其具有鍵盤控制權。