菜鸟走在AS3的路上――键盘事件的处理

菜鸟走在AS3的路上――键盘事件的处理

上一回学习了鼠标事件,在康老的帮助下学到了双击的一招,太感谢了,今天接着学习下键盘事件的处理。
在AS2中键盘事件可以用on/onEventCLipt和侦听器来实现,如
on(keyPress "<Enter>") {
    trace("Enter Pressed");
}

onClipEvent(keyDown) {
    trace(Key.getCode());
}
到了AS3这些也都统一了,在上次作业的基础上再写个文档类,试验一下:
package {
import flash.display.Sprite;
import flash.events.KeyboardEvent;
public class 键盘事件 extends Sprite {
public function键盘事件(    ) {
stage.focus = this;
addEventListener(KeyboardEvent.KEY_DOWN,事件);
}
private function 事件(event:KeyboardEvent):void{
trace("key down: " + event.charCode);
}

在上面的代码中在响应用户的键盘输入操作时,调用了 KeyboardEvent 对象。 它有两种类型的键盘事件:KeyboardEvent.KEY_DOWN 和 KeyboardEvent.KEY_UP,它们都在flash.events.KeyboardEvent类中,所以要导入这一行,我查阅了下,其实关于Keyboard被分到了flash.ui.Keyboard中,这个类能构建标准键盘控制的界面。比如游戏啊,计算器啊。
在这个类中不必使用构造函数即可使用 Keyboard 类的方法和属性。 因为Keyboard 类的属性是一些常数,这些常数表示控制游戏时最常用的键。
特别值得注意的是,接受键盘事件的对象必须出于激活状态。因为我们在舞台上做试验,所以需要在主程序中加入这一行,让舞台成为键盘事件的焦点:
stage.focus = this;

下面做一个练习,试试这些功能:
步骤:
1、    创建一个文件,在文档类处写入“键盘事件”。舞台上放两个动态文本,实例名为“键名”和“键值”。
2、    创建名称为“键盘事件.as”的文档类。
3、    定义代码如下:
package {
    import flash.display.Sprite;
    import flash.events.KeyboardEvent;
    import flash.text.TextField;
    public class 键盘事件 extends Sprite {
        public function 键盘事件() {
            stage.focus = this;
            addEventListener(KeyboardEvent.KEY_DOWN,事件);
        }
        private function 事件(event:KeyboardEvent):void {
            键名.text=String.fromCharCode(event.charCode) ;
            键值.text=String(event.charCode);
        }
    }
}
4、    测试下,按下某个键试试。OK



在测试中遇到了两个问题,一是Flash CS3不能导出文件了,测试也不行,弄了半天没辙,上网一搜索,才知道这可能是龙卷风版对中文的支持不好,把FLA文件中的几个汉字打散了,才好了。二是出现了编译错误:提示说event.charCode的值是uint型,它表示 32 位无符号整数的数据类型。 所以转换下才好了。

问题:按下各种特殊键时,比如F1~F10,方向键时键名处值都为零呢?


Flash动画




[本日志由 高原红 于 2008-10-31 03:44 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.