不同的机型对于键盘事件的响应不相同。经过我的测试,nokia 7210,3100一次只能接受一个按键信息。

(我写了个测试程式,发现假如一个键被按下后没有松开,则keypressed事件不会再产生,即其他键的 按下操作无效)所以,用缓冲处理控制精灵运动时,假如规定只能四方向运动。假如up已按下,再按下left,精灵的运动方向并不会改变。但是将按键缓冲。 按下up,按下left不释放,松开up---精灵就会向左运动。(在松开up后产生了left的keypressed事件!奇怪吗?松开up后我并没有 进行"按下"left这个动作--left键在up松开前就被按下了且没有松开。似乎机器一直在监测键盘上各键的状态,并且有一个等待队列。)

在wtk的标准模拟器上就不同了。他能够接受多个按键“同时”按下的事件。所以假如用四个并列的if处理,精灵是能够斜着运动的。假如用if else处理,则假如已按下一个方向键,然后再按下另一个,是否能改变方向受到if else 语句中顺序的影响。即,假如是 if(up) else if(left),则会先检查up键,所以假如已按下了left,再按up是能够向上运动的,反过来就不行了。(这个自然:)