Flash CS3 +AS3键盘事件

http://www.webstudio.com.cn/blog/?p=547
[url=http://www.riaos.com]RIA知识库[/url]
[url=http://www.riaos.com]flex[/url]
[url=http://www.riaos.com]RIA[/url]
在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();
}

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;
}

}
}

}

在上面的代码中,可以按左右和下移动方块,向上移动时要同时按住ctrl+上箭头,在接下来的测试中,将代码

case Keyboard.UP :
if (event.ctrlKey) {
box.y-= 10;
}

break;

换成为
case 65:
if (event.ctrlKey) {
box.y-= 10;
}

break;

如果能成功,也就是说同时按下ctrl+a键来向上移动盒子.但并没有成功.而使用shift键确可以成功.如代码:
case 65:
if (event.shiftKey) {
box.y-= 10;
}

break;

目前为止并没有找到问题的原因.在用其它方法测试时,发现无论什么时候按下ctrl键它总会覆盖掉a的键值.而shift就不会.不知原因何在?

--原因
flash cs3中 ctrl键有另外用途不能测试!可以导出影片测试

btw:还有一小点就是在flash ide中会侦听一些键子的操作,在测试影片时,在影片的窗口中选择control菜单,选择disable keyboard shotcuts.即可.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值