在As3.0中的键盘事件使用中,除了键盘事件之外,还要先获取它的焦点.如果不想指定焦点,也可以直接使用stage来做为侦听对象.如下测试是一个盒子,通过键盘来控制它的移动.这里的测试主要是键盘组合键.如下代码:package cn.com.webstudio{
import flash.display.Sprite;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class KeyCodes extends Sprite {
private var box:Sprite;
public function KeyCodes() {
init();
}
在上面的代码中,可以按左右和下移动方块,向上移动时要同时按住ctrl+上箭头,在接下来的测试中,将代码
case Keyboard.UP :
if (event.ctrlKey) {
box.y-= 10;
}
换成为case 65:
if (event.ctrlKey) {
box.y-= 10;
}
如果能成功,也就是说同时按下ctrl+a键来向上移动盒子.但并没有成功.而使用shift键确可以成功.如代码:case 65:
if (event.shiftKey) {
box.y-= 10;
}
private function init():void {
box=new Sprite();
addChild(box);
box.graphics.beginFill(0xff0000);
box.graphics.drawRect(0,0,40,40);
box.graphics.endFill();
box.x=stage.stageWidth / 2;
box.y=stage.stageHeight / 2;
stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyboardEvent);
}
public function onKeyboardEvent(event:KeyboardEvent):void {
switch (event.keyCode) {
case Keyboard.UP :
if (event.ctrlKey) {
box.y-= 10;
}
break;
case Keyboard.DOWN :
box.y+= 10;
break;
case Keyboard.LEFT :
box.x-= 10;
break;
case Keyboard.RIGHT :
box.x+= 10;
break;
default :
break;
}
}
}
}
break;
break;
break;
目前为止并没有找到问题的原因.在用其它方法测试时,发现无论什么时候按下ctrl键它总会覆盖掉a的键值.而shift就不会.不知原因何在.
如果你也想测试一下,可以在这里下载源文件
/upimg/soft/5/1_070524085205.rar |
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |