作者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
1F:推 cjcat2266:呵呵,这个以前刚好有写过 :) 09/24 14:43
4F:→ cjcat2266:用法就跟AS2的Key class一模一样 09/24 14:45
5F:→ cjcat2266:Key.isDown(keyCode) 09/24 14:46
6F:→ KawasumiMai:cj大真强.... 09/24 16:08
7F:→ KawasumiMai:不过在下不太会用package,只会乖乖宣告 09/24 16:09
8F:→ KawasumiMai:所以上一篇才会问全域的问题 09/24 16:09