`

轻量级键盘控制实现原理(转)

 
阅读更多

在AS2.0时代Flash的键盘控制有2种方式,1)key.isDown(code: Number) 和key.isUp(code: Number) 。2)键盘侦听Key.addListener(listener: Object)。而到了AS3.0就只剩下第2种类键盘侦听了,所以在这里我着重讲第2种。这里值得一提的就是在早期的一些FLASH版本中对于键盘侦听的正确性是有差别的。其中flash8 as2.0发布的SWF不能正确侦听onKeyUp事件在频繁触发事件的时候会有不触发现象出现。这也是为什么大部分对按键要求比较高的游戏都用flash 7来发布游戏的原因。到AS3.0 Flash 9之后就再没有这个问题了。

下面是一个简单的8向检测事例的AS3代码,测试按键为4个方向键  

import flash.display.Sprite;
import flash.display.DisplayObject;
import flash.events.*;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);

var ddd:Array=new Array();
ddd=[0,0,0,0];
//创建一个存放4个按键状态的数组,并且初始化值为0(up),当按下时为1(down)
function keyDownHandler(event:KeyboardEvent):void {
//down事件
switch (event.keyCode) {
//获取当前按键的keyCode进行匹配,如果是相应的4个按键则把状态数组中的值设为1
case 37 :
ddd[0]=1;
break;
case 38 :
ddd[1]=1;
break;
case 39 :
ddd[2]=1;
break;
case 40 :
ddd[3]=1;
break;
}
ax.text=ddd.toString();
//设置显示文本框里的内容
myKeyDownTest(ddd.join(""));
//把状态数组ddd合并成一个字符串并用myKeyDownTest函数进行检测类型。
}

function keyUpHandler(event:KeyboardEvent):void {
//up事件
switch (event.keyCode) {
//获取当前按键的keyCode进行匹配,如果是相应的4个按键则把状态数组中的值设为0
case 37 :
ddd[0]=0;
break;
case 38 :
ddd[1]=0;
break;
case 39 :
ddd[2]=0;
break;
case 40 :
ddd[3]=0;
break;
}
ax.text=ddd.toString();
//设置显示文本框里的内容
myKeyDownTest(ddd.join(""));
//把状态数组ddd合并成一个字符串并用myKeyDownTest函数进行检测类型。
}

function myKeyDownTest(k:String) {
//通过字符串检测来判断当前状态数组所反应的状态是哪种
//组合的话4个中取2个一共有15种组合,但是我们这里只需要其中的8种。
//以下代码是根据已知组合输出不同的结果(向显示文本输出不同状态文本),那些不需要的组合则不错处理。
switch (k) {
case "0110" :
ax.text = " 上+右";
break;
case "1100" :
ax.text = " 上+左";
break;
case "0011" :
ax.text = " 下+右";
break;
case "1001" :
ax.text = " 下+左";
break;
case "1010" :
ax.text = " 左+右";
break;
case "0101" :
ax.text = " 上+下";
break;
case "1000" :
ax.text = " 左";
break;
case "0100" :
ax.text = " 上";
break;
case "0010" :
ax.text = " 右";
break;
case "0001" :
ax.text = " 下";
break;
}
}

分享到:
评论

相关推荐

    Tippy.js一个轻量级的纯JS库工具提示(tooltip)库

    **Tippy.js:轻量级纯JS库工具提示详解** Tippy.js是一个高效且高度可定制的纯JavaScript库,专门用于创建工具提示效果。在网页设计中,工具提示经常用于提供额外的信息,当用户悬停在某个元素上时,这些信息会短暂...

    基于HTTP协议的计算机远程控制系统设计和实现1

    Json是JavaScript Object Notation的缩写,是一种轻量级的数据交换格式。在远程控制系统中,Json数据交换格式可以用来实现控制端与被控制端之间的数据交换。控制端可以使用Json格式将控制命令发送给被控制端,而被...

    minigui键盘驱动 贪吃蛇

    MiniGUI是一款轻量级的窗口系统,适用于嵌入式设备,它提供了基本的窗口管理、图形绘制和事件处理功能。 在描述中提到的“花了一星期调好的”,意味着开发者花费了一周的时间进行调试和优化,确保键盘驱动与游戏的...

    mygui-demo.tar.gz_DEMO_MyGui

    MyGui是一个开源的轻量级图形用户界面库,它旨在提供一个简单、高效且灵活的工具集,用于创建各种跨平台的GUI应用程序。MyGui的设计理念是易于使用,允许开发者快速地构建复杂的用户界面。它支持多种渲染后端,包括...

    最新树莓派开源原理图汇总

    2. **Zero和Zero W型号**:这些是最小化的树莓派版本,适用于轻量级应用。Zero W更是在Zero的基础上增加了无线和蓝牙功能。原理图会揭示如何在有限的空间内实现这些功能,以及功耗优化策略。 3. **USB、SPI、DPI...

    Java语言实现远程控制jar+源代码

    Java语言实现远程控制的技术主要基于VNC(Virtual Network Computing)协议,这是一种轻量级的远程桌面协议,允许用户通过网络访问并控制另一台计算机的图形界面。本项目提供了完整的源代码以及可运行的jar包,使得...

    软键盘 WTL 版本

    WTL(Windows Template Library)是微软提供的一套C++库,用于构建轻量级、高效的Windows应用程序。它基于MFC(Microsoft Foundation Classes),但更专注于窗口和控件的底层处理。描述中的“WTL版本自绘的ONscreen ...

    WINCE下输入法的实现

    Windows CE是一个轻量级、可定制的操作系统,常用于嵌入式设备,如PDA、智能手机和工业控制设备等。在这些设备上,提供高效、便捷的中文输入法显得尤为重要。本文将深入探讨WINCE下中文输入法的实现原理,并基于此...

    RustDesk轻巧远程控制软件

    RustDesk是一款高效、安全且轻量级的远程控制软件,专为用户提供便捷的跨平台远程桌面连接服务。它的设计目标是提供一个无广告、开源、免费的替代方案,让用户能够在不同的操作系统之间轻松地进行远程协作和管理。...

    minigui键盘输入引擎移植

    MinigUI是一个轻量级、高效的GUI库,适用于资源有限的硬件环境,如嵌入式设备和物联网(IoT)装置。在这个过程中,主要关注的是如何将键盘输入功能适配到MinigUI的框架中,以便用户可以通过键盘进行交互。 首先,我们...

    J2ME实现小球碰壁镜面返回效果,并键控制方向。

    J2ME是Java的一种轻量级版本,特别适用于移动设备和嵌入式系统,如手机和智能手表,提供了一个强大的开发环境来创建丰富的移动应用和游戏。 首先,我们要理解小球碰壁镜面返回的效果。这通常涉及到碰撞检测和物理...

    coronaOS:在C和C ++中从零开始构建基于UNIX的x86_32bit轻量级操作系统

    "CoronaOS:在C和C++中从零开始构建基于UNIX的x86_32bit轻量级操作系统" CoronaOS是一个开源项目,旨在为x86架构的计算机提供一个轻量级的操作系统,它借鉴了UNIX的设计哲学。在深入探讨其构建过程之前,我们首先要...

    javascrip软键盘

    - **KeyboardJS**:轻量级的键盘库,易于集成和扩展。 - **ng-keyboard**:针对Angular框架的软键盘组件。 ### 案例应用 软键盘常用于在线支付、密码输入、移动应用开发以及任何需要增强输入安全性的场景。 综上所...

    键盘映射工具QKeyMapper,Qt开发Win10可用,不修改注册表、不需重新启动系统,可立即生效和停止。.zip

    2. **数据库**:可能QKeyMapper支持保存和加载用户的键盘映射配置,因此可能包含了数据库连接和操作的代码,例如SQLite等轻量级数据库的使用。 3. **系统**:这里可能指的是系统级别的键盘输入捕获和控制,...

    简易操作系统的设计与实现

    6. **线程**:线程是轻量级的进程,允许一个进程中并发执行多个执行流。理解和实现线程管理对于优化系统性能和提高并发性至关重要。 7. **调度算法**:操作系统通过调度算法决定哪个进程或线程应该获得CPU执行权。...

    基于minigui的触摸屏软键盘设计

    MinigUI(微型GUI)是一个轻量级的图形用户界面库,特别适合资源有限的嵌入式设备。下面我们将详细探讨minigUI和触摸屏软键盘的设计原理、实现方法以及其在嵌入式系统中的应用。 **MinigUI简介** MinigUI,全称...

    LWJGLGame:使用轻量级Java游戏库用Java编写的游戏

    **LWJGLGame:利用轻量级Java游戏库打造Java游戏** 在Java编程领域,LWJGL( Lightweight Java Game Library )是一个强大的工具,它允许开发者创建高性能的图形和音频应用程序,包括游戏。LWJGL为Java提供了一个低...

    Fireworks-Engine:使用OpenGL进行其他自定义和快速原型制作的轻量级沙盒游戏引擎

    "Fireworks-Engine"是一个基于OpenGL的轻量级游戏引擎,设计用于快速原型制作和自定义游戏开发。这个开源项目支持跨平台运行,包括Windows、Linux和Mac OS操作系统,为开发者提供了一个灵活的沙盒环境来试验和创建...

    远程控制源码

    描述中的"简单桌面控制 exe"指的是一个简单的桌面控制应用程序的可执行文件(exe),这可能是一个轻量级的远程控制客户端。"例子高效"暗示了这个程序设计得既简洁又高效,能够快速响应并执行远程控制操作。"非常简单...

Global site tag (gtag.js) - Google Analytics