论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

Flash CS3 +AS3键盘事件

文章类别:Flash AS编程 | 发表日期:2008-10-6 17:42:44


在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

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

视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058