FLASH中响应键盘事件的四种方法

实现FLASH中的键盘事件监听与右键屏蔽技术 本文还有配套的精品资源,点击获取 简介:在Flash编程中,键检测和右键屏蔽是实现互动体验的关键技术。通过ActionScript的 Keyboard 类和事件监听,Flash应用能响应用户的键盘输入。同时,通过设置Stage的 menu 属性为 false ,可以屏蔽右键点击事件,防止浏览器默认菜单干扰应用。本文档包含源文件 ... 阅读详情

响应键盘的方法作为AS中的一个重要组成部分,在如今已经越来越广泛的使用,尤其是在 FLASH游戏制作中,如果缺少了响应键盘的方法,那是不可能的,而响应键盘的方法主要的四种,分别是:

1、利用按钮进行检测
2、利用KEY对象
3、利用键盘侦听的方法
4、利用影片剪辑的keyUp和keyDown事件来实现响应键盘

只有熟练掌握了这些方法,然后加以变通的话,就会得到很多意想不到的效果,下面我就结合理论和自己的想法简要的介绍一下。

第一种响应键盘的方法:利用按钮进行检测来实现响应键盘

在按钮的on事件处理函数中不但可以对鼠标事件作出响应,而且可以对键盘事件作出响应。 如在按钮的动作面板中加入如下所示的代码,在敲击键盘上的X键时输出窗口中将提示:X is pressed
在按钮上加上:

on (keyPress "x") {
  trace("X is pressed");
}

但是要注意的是:检测键盘上的字母键时,字母都应为小写。如果要检测键盘中的特殊键, Flash中有一些专门的代码来表示它们,下面列出了一些常用的功能键的表示代码:

<Left> <Right> <Up> <Down> <Space <Home> <End> <Insert> <PageUp> <PageDown>
<Enter> <Delete> <Backspace> <Tab> <Escape>

如要检测键盘上的<Left>键,可以使用下面的ActionScript:

on (keyPress "<Left>") {
trace("Left is pressed");
}

另外,你可以在一个按钮中加入若干个on函数,也可以在一个on函数中结合多种事件,这使 您可以为按钮定义自己熟悉常用的快捷键,如下所示:

on (release, keyPress "<Left>") {
_root.myMC.prevFrame();
}
on (release, keyPress "<Right>") {
_root.myMC.nextFrame();
}

上面的第一个语句实现单击按钮或按键盘上的左方向键,控制影片剪辑myMC回退1帧,而上面的第二个语句实现单击按钮或按键盘上的右方向键,控制影片剪辑myMC前进1帧。

最后给出实例源文件:下载

第二种响应键盘的方法:利用Key对象来实现响应键盘的操作
 
利用按钮检测按键动作很有效,但是并不利于检测持续按下的键,所以不适合于制作某些通过键盘控制的游戏。
这时,您就需要用到Key对象。Key对象包含在动作面板的“对象”/“影片”目录下面,它由Flash内置的一系列方法、常量和函数构成。使用Key对象可以检测某个键是否被按下,如要检测左方向键是否被按下,可以使用如下ActionScript:

if (Key.isDown(Key.LEFT)) {
  trace("The left arrow is down");
}

函数Key.isDown返回一个布尔值,当该数中的参数对应的键被按下时返回true,否则返回false。常量Key.LEFT代表键盘上的左方向键。当左方向键被按下时,该函数返回true。
Key对象中的常量代表了键盘上相应的键,下面列出了一些基本的常量:
一些功能键的表示:

Key.BACKSPACE Key.ENTER Key.PGDN
Key.CAPSLOCK Key.ESCAPE Key.RIGHT
Key.CONTROL Key.HOME Key.SHIFT
Key.DELETEKEY Key.INSERT Key.SPACE
Key.DOWN Key.LEFT Key.TAB
Key.END Key.PGUP Key.UP

以上是键盘上的功能键,那么如何表示键盘上的字母键呢?
Key对象提供了一个函数Key.getCode来实现这一功能,如下所示:

if (Key.isDown(Key.getCode("x"))) {
  trace("X is pressed");
}

上面脚本的意思就是,利用Key.getCode函数来告诉系统你是否按下了x键,如果按下了x键以后,函数Key.isDown则会返回true,在输出窗口就会输出X is pressed。

最后给出实例源文件:下载

第三种响应键盘的方法:利用键盘侦听的方法来实现响应键盘(个人习惯用这种方法)

假设在影片剪辑的onClipEvent(enterFrame)事件处理函数中检测按键动作,而影片剪辑所在的时间轴较长,或计算机运算速度较慢,就有可能出现这种情况:即当在键盘上按下某个键时还未来得及处理onClipEvent(enterFrame)函数,那么按键动作将被忽略,这样的话,很多你想要的效果就会无法实现了。
另外,还有一个需要解决的问题就是,在某些游戏(如射击)中,我们需要按一次键就执行一次动作(发射一发子弹),即使长时间按住某个键不放也只能算作一次按键,而Key对象并不能区别是长时间按住同一个键还是快速地多次按键。
所以如果要解决这个问题,就需要用到键盘侦听的方法。你可以使用 “侦听器(listener)”来侦听键盘上的按键动作。
要使用侦听器之前,首先需要创建它,你可以使用如下所示的命令来告诉计算机你需要侦听某个事件:

Key.addListener(_root);

Key.addListener命令将 主时间轴 或 某个影片剪辑 作为它的参数,当侦听的事件发生时,可以用这个参数指定的对象来响应该事件。
上面的代码指定主时间轴来响应该事件。要让主时间轴对该事件作出响应,还需要设置一个相应的事件处理函数,否则设置侦听器就没有什么意义了。
键盘侦听的事件处理函数有两个:onKeyUp和onKeyDown,如下所示:

Key.addListener(_root);
_root.onKeyUp = function() {
  trace(Key.getAscii());
};
//代码的意思是,当按下一个键并释放后,输出窗口将输出你按下的那个键的Ascii码

当然,你也可以使用影片剪辑作为侦听键盘的对象,只需要使用影片剪辑的路径代替_root作为Key.addListener命令的参数就可以了。
比如下面代码:

Key.addListener(_root.mc);
_root.mc.onKeyUp = function() {
  trace(Key.getAscii());
};

代码的意思是,当按下一个键并释放后,输出窗口将输出你按下的那个键的Ascii码,意思差不多,但是键盘侦听对象不同,一个是影片mc,一个是主时间轴。

最后给出实例源文件:下载

第四种响应键盘的方法:利用影片剪辑的keyUp和keyDown事件来实现响应键盘

最后一种方法很容易被忽视,但是也有一定的应用价值,最重要的是把概念弄清楚。
影片剪辑包含两个与键盘相关的事件keyUp和keyDown,使用它们也可以实现对按键事件的响应
例如下面的代码:

onClipEvent (keyDown) {
  trace(Key.getAscii());
}
//当按下键盘上的一个键的时候,输出窗口将输出按下的这个键的Ascii码值。

函数Key.getAscii表示返回与按键相对应的ASCII码,其中 ASCII码是一个整数,键盘上的每个字符对应一个ASCII码,如字母A对应的ASCII码为65,B对应的ASCII码为66,a对应的ASCII码为97, b对应的ASCII码为98,+ 对应的ASCII码为43等。需要注意的是:只有字符键才有ASCII码,键盘上的功能键是没有ASCII码的。
如果我想在输出窗口中输出与按键相对应的字符,那怎么办?
这时候,你可以使用String对象的fromCharCode函数将ASCII码转换成字符,如将上例的代码改成如下所示:

onClipEvent (keyDown) {
  trace(String.fromCharCode(Key.getAscii()));
};
//意思就是说,当按下键盘的一个键,输出按下的这个键相对应的字符,当然除了功能键。

关于String对象的详细解释,大家可以查看动作面板的“对象”/“核心”目录下面。  

ActionScript 3中的键盘事件监听与实现 ActionScript 3.0作为Adobe Flash平台的编程语言,提供了强大的事件处理机制。其中,键盘事件监听是开发交互式应用不可或缺的部分,它允许开发者捕捉到用户的键盘操作,从而做出相应的响应。理解键盘事件监听的基本概念和实现方式,是制作动态Flash内容和游戏的基础。对象除了上述属性外,还提供了一些方法,使得开发者能够更好地控制和响应键盘事件。方法:此方法用来告诉浏览器,事件处理程序已经处理了该事件,因此不需要再进行任何其他操作。这对于实现自定义快捷键非常有用。 阅读详情

相关推荐

flash建立一个键盘监听事件

把下面的代码直接复制到第一帧上去就可以实现按任意键继续。实现键盘监听。

Flash MX 2004 编程(AS2.0)教程(十四)

  2.6事件监听   事件有一个习气,就是“拉帮结派”,正常情况下,某些对象是接收不到某些事件的,比方说一个动态文本就不能接受鼠标事件。如果我们编写这样的代码为一个动态文本指定事件处理代码:   myTextField_txt.onMouseDown = function(){   }   当我们在它上面单击鼠标时,代码并不会执行,因为它压根就不会接收到鼠标事件。要想让它正确接受鼠标事件

雪尘的专栏 1662

flash的键盘事件

flash的键盘事件flash的键盘事件flash的键盘事件flash的键盘事件flash的键盘事件flash的键盘事件

flash getCode() and getAscii()

在flash中,getCode()取的是键盘码,getAscii()取的是Asciii码。     所谓键盘码就是键盘扫描码,键盘上的每一个键都有两个唯一的数值进行标志。为什么要用两个数值而不是一个数值呢?这是因为一个键可以被按下,也可以被释放。当一个键按下时,它们产生一个唯一的数值,当一个键被释放时,它也会产生一个唯一的数值,我们把这些数值都保存在一张表里面,到时候通过查表就可以知道是哪一个键

penjie0418的专栏 1422

flashAS3初级教程--简单的鼠标键盘事件

flash AS3 AS3简单教程 AS3简单实例 AS3简单鼠标键盘事件

FLASH高级编程视频教程-70.按键的事件处理函数2.rar

众所周知,世界上97%的台式机上都安装有Flash Player,利用包含Flash创作工具、渲染引擎和已建立的超过200万的设计者和开发者群体的Flash平台生态系统,我们可以制作出各式各样的Flash动画。Adobe推出了flash最新版本FlashCS3,相信大家一定都想一睹其容。但因为暂时没有中文版,所以先拿英文版来给大家介绍一下吧!在这里我们主要讲解关于Flash CS3 的一些基本功能和简单的图像制作实例,希望对大家有所帮助!在这里学院感谢金鹰教程网的刘前进老师提供的视频教程。

as2的Key.isDown方法在as3的代替

as3中没有了Key.isDown很不方便。所以你可以用以下方法用“isKeyPressed(keyCode);”代替: import flash.events.KeyboardEvent; import flash.ui.Keyboard; var _keys:Array = new Array(); stage.addEventListener(KeyboardEvent.KEY_D...

weixin_30670151的博客 148

flash动作脚本教程swf

flash动作脚本教程swf格式,简单易懂,对于初学者帮助很大,多多支持一下把

代码设置 键盘适应_FLASH游戏制作基础:响应键盘的四种方法

响应键盘的方法作为AS中的一个重要组成部分,在如今已经越来越广泛的使用,尤其是在 FLASH游戏制作中,如果缺少了响应键盘的方法,那是不可能的,而响应键盘的方法主要的四种,分别是:  1、利用按钮进行检测  2、利用KEY对象  3、利用键盘侦听的方法  4、利用影片剪辑的keyUp和keyDown事件来实现响应键盘  只有熟练掌握了这些方法,然后加以变通的话,就会得到很多意想不到的效果,下面我就...

weixin_42347739的博客 472

U-Boot 适配新型号 SPI Nor Flash 实战解析

本文详细解析了U-Boot适配新型号SPI Nor Flash的全过程,从JEDEC ID识别错误入手,深入源码分析Flash信息数据库,结合实际手册参数添加新设备支持。重点介绍了设备树同步和验证调试的关键步骤,并总结了常见问题与解决方案,为嵌入式开发者提供实用参考。

weixin_29170327的博客 199

Oracle EBS R12 AP模块发票导入接口实战:从SQL插入到API调用的完整流程

本文详细解析了Oracle EBS R12 AP模块发票导入接口的完整流程,从SQL插入到API调用的实战技巧。涵盖接口表设计、数据验证、双通道导入机制及错误诊断,特别分享官方文档未提及的高阶优化方案,助力企业实现财务数字化转型。

weixin_33728268的博客 476

Flash响应键盘的四种方法

 响应键盘的方法作为AS中的一个重要组成部分,在如今已经越来越广泛的使用,尤其是在 FLASH游戏制作中,如果缺少了响应键盘的方法,那是不可能的,而响应键盘的方法主要的四种,分别是:  1、利用按钮进行检测  2、利用KEY对象  3、利用键盘侦听的方法  4、利用影片剪辑的keyUp和keyDown事件来实现响应键盘  只有熟练掌握了这些方法,然后加以变通的话,就会得到很多意想不到的效果,下面我

风影随悦的专栏 920

机械臂开发必备:KDL库正逆解与动力学实战指南

在机器人算法领域,运动学与动力学计算是机械臂控制、仿真与轨迹规划的核心基础。正运动学描述关节空间到笛卡尔空间的映射,逆运动学则需要求解复杂的非线性方程,工程实现时常面临数值稳定性与调试效率的挑战。KDL(Kinematics and Dynamics Library)作为ROS生态中广泛使用的开源库,提供了统一的模型描述与高效求解器,将正逆解、雅可比矩阵及动力学参数计算封装为简洁接口,大幅降低开发门槛。无论是机械臂的笛卡尔空间轨迹跟踪,还是基于动力学模型的前馈控制,KDL都展现出强大的工程价值。本文从运动学

weixin_33860528的博客 2506

flash响应键盘事件的方法

这篇日志摘自 闪客帝国       卡其色 的文章 与大家分享一下 第一种响应键盘的方法:利用按钮进行检测来实现响应键盘在按钮的on事件处理函数中不但可以对鼠标事件作出响应,而且可以对键盘事件作出响应。 如在按钮的动作面板中加入如下所示的代码,在敲击键盘上的X键时输出窗口中将提示: X is pressed在按钮上加上:on (keyPress "x") { trace("X is pres

Mr_eee的专栏 1222

别再为数码管引脚发愁了!用STM32的普通IO口驱动TM1650数码管模块(附完整模拟I2C代码)

本文详细介绍了如何利用STM32的普通IO口通过模拟I2C协议驱动TM1650数码管模块,提供了完整的硬件连接方案和软件实现代码。通过模拟I2C技术,开发者可以灵活使用任意GPIO引脚控制多位数码管显示,解决了传统驱动方式占用大量IO资源的问题。文章包含TM1650寄存器解析、亮度控制等实用功能实现,并分享了常见问题排查与性能优化技巧。

weixin_30764771的博客 658

第四章 自定义组件、动画

第三章 自定义组件、动画 (一)自定义View 1.1) onMeasure:对当前View的尺寸进行测量 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) widthMeasureSpec和heightMeasureSpec包含测量模式和尺寸大小 int widthMode = MeasureSpec....

Stay Hungry Stay Foolish 求知若饥 虚心若愚 8132

让Canvas支持键盘事件

Canvas自身是不响应键盘事件的,可以添加如下代码是Canvas具备这个功能。 AS 代码 var v:Canvas = new Canvas();    v.addEventListener(KeyboardEvent.KEY_DOWN,OnkeyDown);    v.addEventListener(MouseEvent.MOUSE_UP.OnMouseUP)...

shjy.nicholas 1173

自然语言处理之机器翻译:Transformer:Transformer在低资源语言翻译中的应用

Transformer模型是自然语言处理领域的一个重要突破,由Vaswani等人在2017年的论文《Attention is All You Need》中提出。它摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN)的序列依赖性,采用自注意力机制(Self-Attention)处理输入序列,极大地提高了训练效率和模型性能。

zhubeibei168的博客 1014

AS3.0 键盘事件

1,问题: 在开发应用中,需要对键盘事件做监听,但是要根据 focus 焦点 不同而 是否需要做反应。例如当焦点在 场景地图 上,这时候的快捷键 起作用 ,而打开一个应用程序后例如聊天框,聊天这时候 虽然也是键盘 事件 但我们不希望触发执行快捷键判断 之类的 。 键盘事件的监听 是要对stage做监听,那么当上述聊天情况发生时,聊天应用存在于stage中,不可避免的触发判断。 如源代码...

dishell的专栏 1031

DA14531之如何Debug(在线调试、Jlink仿真、串口打印)

在线调试和串口打印调试。在线调试是Keil软件配合Jlink编译、烧录、仿真为一体的,其操作包括:运行、停止、打断点,单步运行等。而串口打印调试,只需打开相关配置,让arch_printf()函数正常输出串口数据。若想在初始化完成后打印arch_printf(“goto Loop\r\n”);波特率为115200,接收到串口消息goto Loop。连好线后,点击仿真按钮,在线Jlink调试。

hejinwu1314的博客 1792

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

1.6. 响应鼠标和键盘事件

1.6. 响应鼠标和键盘事件 问题我要处理鼠标或键盘事件解决办法监听和捕获处理鼠标和键盘事件讨论 处理鼠标和键盘事件很类似于enterFrame 事件,这些在1.5节已经讨论过,只是略有不同。对于鼠标事件,主程序不会直接接收,需要通过一个可视组件监听它(关于可视组件会在第5章讨论)。下面的例子创建一个sprite,添加到可视组件列,然后在它上面画了个矩形:package {     import

3185

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

as3中解决响应键盘事件时停顿一下的问题,让对象可以八方移动

问题描述: 最近在做一个坦克大战的游戏中,按下方向键以后,坦克应该持续移动,而不是先移动一下,然后停顿一下,然后再继续移动。 下面是解决的办法。是通过结合Event.ENTER_FRAME事件来实现的 package  { import flash.display.Graphics; import flash.display.Sprite; import flash.events.E

rihui1hao的专栏 2099

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: Flash MX 2004 支持的HTML标签
下一篇: Flash8滤镜与混合模式
fallscn
博客等级 码龄20年 1粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值