学习 Flash 中的 ActionScript 2.0 |
|
|
|
| 用 ActionScript 创建交互操作 > 创建交互性和视觉效果 > 捕获按键 | |||
在 Flash Player 中,您可以使用全局 on() 处理函数截获按键的内置行为,如下面的示例所示:
/* 当按下左箭头或右箭头键时,处理函数所附加到的影片剪辑的透明度会更改。 */
on (keyPress "<Left>") {
this._alpha -= 10;
}
on (keyPress "<Right>") {
this._alpha += 10;
}
当您使用"控制">"测试影片"测试应用程序时,请确保选择了"控制">"禁用快捷键",否则具有内置行为的某些键不会被覆盖。请参见"ActionScript 2.0 语言参考"中 on 处理函数的 keyPress 参数。
您可以使用内置的 Key 类的方法来检测用户最后按下的键。Key 类不需要构造函数;要使用其方法,只需调用该类上的方法即可,如下面的示例所示:
Key.getCode();
您可以获得按键的虚拟键控代码或美国信息交换标准码 (ASCII) 值:
getCode() 方法。getAscii() 方法。键盘上的每一个实际的键都有一个虚拟键控代码。例如,左箭头键的虚拟键控代码为 37。通过使用虚拟键控代码,可以确保 SWF 文件的控制在每个键盘上都相同,而不用考虑语言或平台。
ASCII 值分配给每个字符集的前 127 个字符。ASCII 值提供了有关屏幕上字符的信息。例如,字母"A"和字母"a"有不同的 ASCII 值。
要确定使用哪些键并确定它们的虚拟键控代码,可使用下面其中一种方式:
onClipEvent() 处理函数分配给影片剪辑,然后选择"控制">"测试影片"并按所需键:
onClipEvent(keyDown) {
trace(Key.getCode());
}
所需键的键控代码将出现在"输出"面板中。
通常是在事件处理函数内使用 Key 类方法。在下面的 SWF 文件中,用户可以使用箭头键移动汽车。Key.isDown() 方法表明当前按住的键是左箭头键、右箭头键、上箭头键、还是下箭头键。事件侦听器 Key.onKeyDown 通过 if 语句确定 Key.isDown(keyCode) 的值。根据该值,处理函数会指示 Flash Player 更新汽车的位置并显示方向。
以下示例演示如何捕获按键动作,以便根据相应的方向键(上、下、左或右)在舞台上向上、向下、向左或向右移动影片剪辑。此外,文本字段显示所按下的键的名称。
创建一个能被键盘激活的影片剪辑: 在此示例中,影片剪辑实例名称为 car_mc。
distance 变量并将它的值设置为 10:
var distance:Number = 10;
this.createTextField("display_txt", 999, 0, 0, 100, 20);
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
};
Key.addListener(keyListener);
onEnterFrame 事件处理函数体中。
您的代码应如下面的示例所示(新加代码以粗体显示):
var distance:Number = 10;
this.createTextField("display_txt", 999, 0, 0, 100, 20);
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
if (Key.isDown(Key.LEFT)) {
car_mc._x = Math.max(car_mc._x - distance, 0);
display_txt.text = "Left";
}
};
Key.addListener(keyListener);
如果按下左箭头键,则汽车的 _x 属性被设置为当前 _x 值减去距离所得的值与 0 值之间的较大值。因此,_x 属性的值绝不会小于 0。此外,Left 一词也应显示在 SWF 文件中。
您的完整代码应如下面的示例所示(新加代码以粗体显示):
var distance:Number = 10;
this.createTextField("display_txt", 999, 0, 0, 100, 20);
var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
if (Key.isDown(Key.LEFT)) {
car_mc._x = Math.max(car_mc._x - distance, 0);
display_txt.text = "Left";
} else if (Key.isDown(Key.RIGHT)) {
car_mc._x = Math.min(car_mc._x + distance, Stage.width - car_mc._width);
display_txt.text = "Right";
} else if (Key.isDown(Key.UP)) {
car_mc._y = Math.max(car_mc._y - distance, 0);
display_txt.text = "Up";
} else if (Key.isDown(Key.DOWN)) {
car_mc._y = Math.min(car_mc._y + distance, Stage.height - car_mc._height);
display_txt.text = "Down";
}
};
Key.addListener(keyListener);
有关 Key 类的方法的更多信息,请参见"ActionScript 2.0 语言参考"中的 Key。
|
|
|
|