Re: [問題] AS3如何在特定時間點偵測組合鍵狀態?

看板Flash作者 (魔物を討つ者)時間14年前 (2011/09/24 01:10), 編輯推噓1(107)
留言8則, 2人參與, 最新討論串2/2 (看更多)
自問自答 留給需要的人 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

09/24 14:43, , 1F
呵呵,這個以前剛好有寫過 :)
09/24 14:43, 1F

09/24 14:43, , 2F
09/24 14:43, 2F

09/24 14:45, , 3F
這個排版比較精美 http://bit.ly/qkDAxM
09/24 14:45, 3F

09/24 14:45, , 4F
用法就跟AS2的Key class一模一樣
09/24 14:45, 4F

09/24 14:46, , 5F
Key.isDown(keyCode)
09/24 14:46, 5F

09/24 16:08, , 6F
cj大真強....
09/24 16:08, 6F

09/24 16:09, , 7F
不過在下不太會用package,只會乖乖宣告
09/24 16:09, 7F

09/24 16:09, , 8F
所以上一篇才會問全域的問題
09/24 16:09, 8F
文章代碼(AID): #1EVBsN-V (Flash)
文章代碼(AID): #1EVBsN-V (Flash)