作者KawasumiMai (魔物を討つ者)
看板Flash
標題Re: [問題] AS3如何在特定時間點偵測組合鍵狀態?
時間Sat Sep 24 01:10:44 2011
自問自答
留給需要的人
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:用法就跟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