菜鸟走在AS3的路上――键盘事件的处理
作者:高原红 日期:2008-10-31
菜鸟走在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动画
上一回学习了鼠标事件,在康老的帮助下学到了双击的一招,太感谢了,今天接着学习下键盘事件的处理。
在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动画评论: 0 | 引用: 0 | 查看次数: -
发表评论
上一篇
下一篇


文章来自:
Tags: