打印

[编程] 继续AS3的按键侦听问题

本来还以为又是代码的哪里有问题,但找了半天发现是侦听器的问题(或者是特性)
假如第1次按下并按住某键(这里只与按键顺序有关,至于按什么键不重要)后,第2次又按下并按住某另一个键,这时会有2个键被按下并按住,
然后,松开第2次按的键,并保持第1次按的键扔被按下,这时KEY_DOWN的侦听就会停止
而松开第1次按的键,并保持第2次按的键扔被按下,这时KEY_DOWN的侦听则会继续

这种情况是什么原因?
我想要的是只要有键保持按下状态就执行KEY_DOWN侦听
每一次的键按下和松开是对应的
那么用侦听的方式处理不了复杂按键吗?
AS3又没有Key.isDown,即使自己写个类模拟Key.isDown,检测按键值还是要用到侦听

[ 本帖最后由 tooya 于 2006-8-9 00:43 编辑 ]
不用as3..as2的那个同进多键侦听我都没搞懂的.总是不能同进侦听到两个键的.
键盘只有一副啊 -_-||| 侦听 Key 事件对应整个键盘.. 不是对应键的. 不管是逻辑上还是什么的出现这种情况很正常.
我是用 enterFrame 持续判断解决的... 期待更好的办法

TOP

但是用EnterFrame也需要能获得按键值,在没有Key.isDown的情况下还是需要侦听,然后用event.getCode才能获得按键值,还是AS3里有我不知道的方法可以不通过侦听获得按键值

TOP

这个是我自己的 Key 类, 未完成状态, 不过配合 onEnterFrame 可以实现对所有键盘的侦听, 我不知道你的代码怎么写的..
Key.as

 提示:您可以先修改部分代码再运行
在 enterFrame 事件曲柄中我可以这样判断 2 个键同时按下
if (Key.isDown(Keyboard.ENTER, keyboard.SHIFT))

KeyTest.as

 提示:您可以先修改部分代码再运行
刚刚发现, 其实这个类再扩展一下, 同样可以做做到完整的键盘捕获而不用 enterFrame

TOP

经过实验,又得出一些结果:
我在自己写的Key类里也用了键盘侦听,在场景里如果也用侦听,则我在1走楼所说的侦听问题仍会出现,但如果用setInterval或EnterFrame循环检测而不用侦听,一切就正常了,但是我想不通, 虽然场景里没用侦听,但Key类里也有侦听,怎么就正常了呢

TOP

因为有个数组专门保存按下的键的...

TOP