看板 Flash 關於我們 聯絡資訊
自問自答 留給需要的人 var key:Object=new Object()//新增一個Object key.isDown=new Object() //新增一個子Object stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown);//按下時紀錄 stage.addEventListener(KeyboardEvent.KEY_UP, keyup);//放開時除去 stage.addEventListener(Event.ENTER_FRAME, keytest);//按鍵偵測用 function keydown(event:KeyboardEvent):void{ key.isDown[event.keyCode]=true //對應標記設定true }; function keyup(event:KeyboardEvent):void{ if(event.keyCode in key.isDown){ delete key.isDown[event.keyCode] //刪除對應標記 } }; function keytest(event:Event){ //每一定時間跑一次,決定於fps if(key.isDown[65]){ //這是判定語法,判定65(A) trace("65 isDown") } if(key.isDown[68]){ trace("68 isDown") } trace("=======================================") } ※ 引述《KawasumiMai (魔物を討つ者)》之銘言: : stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownFunc); : function KeyDownFunc(event:KeyboardEvent):void{ : trace(event.keyCode); : }; : 這個方法,是屬於被動式的 : 也就是說按鍵按下時才回報按鍵是哪一顆 : 就算是if(event.keyCode==65) : 也是按鍵按下時才偵測按鍵是否正確並完成以下動作 : 那如果想在特定時間點 : 例如某一影格時間偵測"某個按鍵"是否正按著 : (一個影格只產生效果一次) : 那麼AS3該怎麼寫呢? : 又 : trace(event.keyCode)似乎只會產生最後按下的keyCode : 那如果一個影格內分別需要偵測某A按鍵和某B按鍵個別的按下情形 : 那麼應該要怎麼寫呢? : 簡單的說就是假設判定一次x+=1 : 那麼fps60的情況每秒就會移動60 : fps30的情況每秒就會移動30 : 而不想要由EventListener獨立執行,跟fps脫離 -- 「杏、どうしたんだ?」 「どっ、どうもしてないわよ。あんたこそ、椋とデートじゃなかったの?」 「ずぶ濡れじゃねぇかよ、ふっふっ」 「来ないで!!!!!!!!!!!!!!……                      来ないで…お願いだから…」       京都アニメ クラナド~AfterStory~第25話 「もうひとつの世界─杏編」 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.210.139
cjcat2266:呵呵,這個以前剛好有寫過 :) 09/24 14:43
cjcat2266:http://bit.ly/lyvaWZ 09/24 14:43
cjcat2266:這個排版比較精美 http://bit.ly/qkDAxM 09/24 14:45
cjcat2266:用法就跟AS2的Key class一模一樣 09/24 14:45
cjcat2266:Key.isDown(keyCode) 09/24 14:46
KawasumiMai:cj大真強.... 09/24 16:08
KawasumiMai:不過在下不太會用package,只會乖乖宣告 09/24 16:09
KawasumiMai:所以上一篇才會問全域的問題 09/24 16:09