JS键盘控制事件教程

Cesium中级开发教程之十五:键控地球 关闭默认屏幕控制机制,开启ScreenSpaceEventHandler自定义键盘事件,viewer.clock.onTick.addEventListener监听键盘事件,并控制相机的前进后退的操作。w键是前进,s键是后退,a键是向左,d键是向右,q键是抬起,e键是降低。 阅读详情
 获取键盘控制事件是实现交互性最有力的方法之一。  
   
   首先需要了解的是如何初始化该事件,基本语句如下:  
   
   document.onkeydown = keyDown  
   
   当浏览器读到这个语句时,无论按下键盘上的哪个键,都将呼叫KeyDown()函数。  
   
   捕获键盘事件对于不同的浏览器来说有点困难,我们分别的来学习不同浏览器的实现语句。  
 
   Netscape  
   
   Netscape的程序实现要比IE麻烦,你必须放一个特别的语句,来使Netscape始终去检查击键事件,如果没有这行语句,击键事件将与按下鼠标事件搞混。特别语句如下:  
   
   document.onkeydown = keyDown  
if (ns4) document.captureEvents(Event.KEYDOWN)  
   
   keyDown()函数有一个隐藏的变量--一般的,我们使用字母“e”来表示这个函数。  
   
   function keyDown(e)  
   
   变量e表示发生击键事件,寻找是哪个键被按下,使用以下属性:  
   
   e.which  
   
   这将给出该键的索引值,把索引值转化成该键的字母或数字值,写:  
   
   String.fromCharCode(e.which)  
   
   把上面的语句放在一起,我们可以知道被按下的是哪一个键:  
   
   function keyDown(e) {  
  var keycode = e.which  
  var realkey = String.fromCharCode(e.which)  
  alert("keycode: " + keycode + " realkey: " + realkey)  
}  
   
   document.onkeydown = keyDown  
document.captureEvents(Event.KEYDOWN)  
   
   Internet Explorer  
   
   IE的程序与Netscape类似,但它不需要e变量,用window.event.keyCode来代替e.which,把键的索引值转化为真实键值方法类似:String.fromCharCode(event.keyCode),程序如下:  
   
   function keyDown() {  
   var keycode = event.keyCode  
   var realkey = String.fromCharCode(event.keyCode)  
   alert("keycode: " + keycode + " realkey: " + realkey)  
}  
document.onkeydown = keyDown  
document.onkeydown = keyDown  
   
   适用于两者的程序  
   
   用两种浏览器检查上述实例,你会发现执行结果不总是一样的,这是因为两种浏览器的键盘代码设置不相同,因此你必须使用单独的代码分别来写这段程序,而毫无别法。  
   
   建议你要完全忘掉实际的键值,仅仅使用键盘的代码值来工作。下面这段程序将视情况而设置,如果是用IE的话,ieKey生效,把nKey设为0,如果是用Netscape的话,nKey生效,把nKey设为0,然后用一个警示框来显示两者的值:  
   
   function keyDown(e) {  
  if (ns4) {  
   var nKey=e.which;  
   var ieKey=0  
  }  
  if (ie4) {  
   var ieKey=event.keyCode;  
   var nKey=0  
  }  
  alert("nKey:"+nKey+" ieKey:" + ieKey)  
}  
document.onkeydown = keyDown  
if (ns4) document.captureEvents(Event.KEYDOWN)  
   
   使用键盘移动对象  
   
   下面的程序实现用键盘移动对象,程序将检查哪一个键被按下,从而调用相应的函数来移动对象。本例中,当字母“A”被按下时,对象就开始移动,字母“A”键在nKey中的值是97,ieKey的值为65,在程序中将分别检查这两个值。  
   
   function init() {  
  if (ns4) block = document.blockDiv  
  if (ie4) block = blockDiv.style  
  block.xpos = parseInt(block.left)  
  document.onkeydown = keyDown  
  if (ns4) document.captureEvents(Event.KEYDOWN)  
}  
function keyDown(e) {  
  if (ns4) { var nKey=e.which; var ieKey=0 }  
  if (ie4) { var ieKey=event.keyCode; var nKey=0 }  
  if (nKey==97 || ieKey==65) { // 如果"A"键按下  
    slide()  
  }  
}  
function slide() {  
  block.xpos += 5  
  block.left = block.xpos  
  status = block.xpos // 这一句不一定需要,只是为了检查状态  
  setTimeout("slide()",30)  
}  
   
   增加 "Active"变量  
   
   上面程序稍微有些不足,对象移动以后就无法使它停止了,而且当你多按几次A键时,物体将运动得越来越快,这里我们来修补它。  
   
   使用变量"active"来改变这种情况,插入if语句来检查函数是否重复。  
   
   function slide() {  
  if (myobj.active) {  
  myobj.xpos += 5  
  myojb.left = myobj.xpos  
  setTimeout("slide()",30)  
  }  
}  
   
   在这种情况中,slide()函数只有在myobj.active值为真的时候才会工作,当myobj.active值为假时,对象将停止移动。  
   
   使用 onKeyUp 和 "Active" 变量  
   
   onkeyup事件和onkeydown事件工作原理相同,用以下语句初始化该事件:  
   
   document.onkeydown = keyDown  
document.onkeyup = keyUp  
if (ns4) document.captureEvents(Event.KEYDOWN | Event.KEYUP)  
   
   keyUp() 函数与之相同,当一个键被放开时事件被激发,对象停止移动,并将active变量置为0:  
   
   function keyUp(e) {  
  if (ns4) var nKey = e.which  
  if (ie4) var ieKey = window.event.keyCode  
  if (nKey==97 || ieKey==65)  
  block.active = false  
}  
   
   下面是比较完整的程序:  
   
   function init() {  
  if (ns4) block = document.blockDiv  
  if (ie4) block = blockDiv.style  
  block.xpos = parseInt(block.left)  
  block.active = false  
  document.onkeydown = keyDown  
  document.onkeyup = keyUp  
  if (ns4) document.captureEvents(Event.KEYDOWN | Event.KEYUP)  
}  
function keyDown(e) {  
  if (ns4) {var nKey=e.which; var ieKey=0}  
  if (ie4) {var ieKey=event.keyCode; var nKey=0}  
  if ((nKey==97 || ieKey==65) && !block.active) { // if "A" key is pressed  
    block.active = true slide()  
  }  
}  
function keyUp(e) {  
  if (ns4) {var nKey=e.which; var ieKey=0}  
  if (ie4) {var ieKey=event.keyCode; var nKey=0}  
  if (nKey==97 || ieKey==65) {  
  block.active = false // if "A" key is released  
  }  
}  
function slide() {  
   if (block.active) {  
    block.xpos += 5  
    block.left = block.xpos  
    status = block.xpos // not needed, just for show  
    setTimeout("slide()",30)  
   }  
}  
JS键盘控制JS键盘控制JS键盘控制 JS键盘控制JS键盘控制JS键盘控制JS键盘控制JS键盘控制 立即下载

相关推荐

js键盘事件实现人物的行走

主要为大家详细介绍了js键盘事件实现人物的行走,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Js键盘事件实现元素上下左右动态移动(内含源码)

本文主要讲解如何利用JavaScript控制键盘的上下左右键同时利用监听键盘事件来实现对一个元素的控制。键盘控制,本质上是监听到用户对键盘使用,并在监听后实现一些方法使得元素可以跟随键盘进行移动。

lplovewjm的博客 2515

双有源桥DC-DC变换器:原理、软开关与移相控制深度解析

隔离型DC-DC变换器是电力电子系统的核心部件,通过高频变压器实现电气隔离与电压匹配,保障系统安全与灵活适配。其工作原理基于功率半导体器件的开关动作,通过调制策略控制能量传输。该技术的核心价值在于实现高效、高功率密度的电能转换,并支持双向能量流动,这对于提升系统整体能效和运行灵活性至关重要。在新能源储能、电动汽车V2G及数据中心供电等场景中,双向能量流成为刚性需求,推动了如双有源桥等先进拓扑的应用。本文聚焦于双有源桥这一实现高效双向隔离变换的“明星”方案,深入剖析其利用移相控制实现软开关的机理。通过分析谐振

weixin_34195142的博客 378

js实现键盘控制div移动(可加速)_☆往事随風☆的博客

文章目录前言一、基本思路二、代码分析1.首先为div开启绝对定位2.为document绑定键盘按下和抬起事件3.获取对应键盘的Unicode编码4.设置变量保存速度和键盘Unicode编码5.通过定时器设置移动速度和方向三、整体代码四、效果展示五、总结 前言 利用js实现键盘控制div移动,同时按下ctrl和方向键可以实现加速移动。 一、基本思路 通过js中的键盘事件来对div的移动做出响应,这里以上下左右键为例,首先获取到这四个按键的Unicode编码,然后在定时器中设置对应的移动方向和速度。 二、.

☆往事随風☆的博客 2113

手把手拆解:储能电站如何实现‘孤岛运行’与‘黑启动’?从SVPWM控制到无缝并网

本文深入解析储能电站的孤岛运行与黑启动技术,从SVPWM控制策略到电网重构实战。通过详细的三环控制架构和黑启动五阶段技术路线,展示储能电站在电网故障时如何快速切换为独立电压源并实现电网重建。文章还探讨了虚拟惯量补偿、多站协同控制等前沿技术,为电力系统应急恢复提供关键解决方案。

weixin_30509393的博客 304

TNS-12516及ORA-12516错误解决

在客户端进行sqlplus连接报错如下: ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程序 在/home/oracle/product/10.2.0/db_1/network/log/listener.log中查看到错误如下: TNS-12516: TNS:listener could not find available handler with matchin

KEL 2万+

二、(JS)JS中常见的键盘事件

js中常见的键盘事件

Sean_0819的博客 1523

ANSYS FLUENT 超临界流体物性分段线性插值数据批量导入

使用fluent自带数据库进行超临界流体仿真时,时不时会出现计算错误,考虑是数据库不稳定引起,而使用自定义的分段线性插值物性则不会出现上述情况。 超临界流体在拟临界点附近物性变化剧烈,需要使用较多的数据点才能更准确的表述物性,如果是在对话框中修改,一次只能输入一个点,人工输入极其费时费力且容易失误。 数据批量导入方法为: 1.以CO2为例,使用REFREPRO等物性查询软件或数据资料,获得所需物性数据表。 2.在FLUENT材料Materia...

wind_rider的博客 1万+

js之按键控制div移动

js之按键控制div移动

m0_67932301的博客 2997

安卓游戏存档修改全攻略:以《英雄迷宫冒险》为例(附避坑指南)

本文详细介绍了安卓游戏存档修改的全过程,以《英雄迷宫冒险》为例,涵盖基础认知、工具选择、实战修改及风险控制。通过十六进制编辑和UTF-8编码解析,玩家可以修改金钱、角色属性和物品数量等数据,同时提供了避坑指南和伦理考量,帮助玩家在享受修改乐趣的同时保持游戏体验的平衡。

weixin_29209801的博客 392

R语言灰色关联分析法

输入数据并用DT包的datatable函数展示数据 ABDDEF分别对应第1到第6个供应商产品质量、技术水平、供应能力、经济效益、交货情况、市场影响度指标属于效益型指 产品价格、地理位置、售后服务指标属于成本型指标。现分别对上述指标进行规范化: 对于效益型指标(正项指标)标准化公式为: x∗=x−min(x)max(x)−min(x) x^{\ast}=\frac{x-min\left( x \right)}{max\left( x \right) -min\left( x \right)} x∗=max

qq_54423921的博客 7996

HTML:用键盘实现元素的方向移动

案例:div的方向移动 body部分: <div id="ok">✈</div> style样式:自己设置大小灯样式,其中最重要的是要元素脱离文档流---不占页面位置了,其下也可以放其他元素。 #ok {position: absolute; } 补absolute:它的参照物是最近使用了定位的父级,如果没有找body。 此案例中div id="ok"的父级就是body。 首先:我们需要知道怎样将键盘中的按键与元素/对象相联系,能控制它。 这就是JS键盘事件

qq_51874203的博客 2579

15. GD32E230定时器实战:基于TIMER5的1秒LED闪烁中断配置详解

本文详细讲解了如何在GD32E230微控制器上配置TIMER5定时器,实现精准的1秒LED闪烁中断。内容涵盖从时钟开启、参数计算、中断设置到服务函数编写的完整流程,重点解析了预分频值与周期值的配置方法,帮助开发者掌握硬件定时器的核心应用。

weixin_29092787的博客 135

用JS键盘事件来移动图片

开发工具与关键技术: VS 2019/JS 作者:唐嘉怡 撰写时间:2022/4/18 小时候都玩过下水道修理工的游戏吧,那其实是一个很简单的小游戏,用简单的JS技术就可以实现,现在我来示范一下最简单的用键盘来移动图片。 首先,要创建新的文件夹,来装载图片和代码。 ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​...

m0_66128311的博客 4397

扫地机器人行业 企业篇-产业总部地理分布

中国扫地机器人产业呈现区域集聚特征,广东省以13家企业领跑全国,其中深圳独占9家(如大疆、云鲸智能等),佛山、广州、东莞各有分布。江苏省6家企业主要集中在苏州(科沃斯、追觅科技等)。北京聚集了石头科技、小米等4家品牌。浙江、山东、湖南等地也有代表性企业分布。国际品牌方面,美国iRobot、韩国三星/LG、日本松下等均在各自国家设立总部,而戴森、飞利浦等欧洲品牌则将中国运营中心设在上海或苏州。值得注意的是,部分品牌如由利、宝家丽虽为外资起源,但主要运营实体已落户中国。

智能硬件研发,欢迎交流 362

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JS 技巧----键盘控制事件教程

 JS键盘控制事件教程获取键盘控制事件是实现交互性最有力的方法之一。         首先需要了解的是如何初始化该事件,基本语句如下:        document.onkeydown = keyDown         当浏览器读到这个语句时,无论按下键盘上的哪个键,都将呼叫KeyDown()函数。         捕获键盘事件对于不同的浏览器来说有点困

AJAXBloger的专栏 1695

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

javascript技术教程蔡敏_程序员都必掌握的前端教程之JavaScript基础教程(下)

阅读本文约需要10分钟,您可以先关注我们,避免下次无法找到。JavaScript基础教程(上)成哥为大家介绍了JavaScript的基础知识、数据类型及常用方法,本编文章主要介绍JavaScript的的控制语句、函数编程及异常处理等相关知识,下面成哥就为大家一一介绍这些内容。01 JavaScript控制结构(1)if-else语句如下所示,使用if-else语句根据不同的三个年龄条件在页面上打印...

weixin_35720393的博客 302

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

p5.js: 通过上下左右键控制方块的位置

&lt;html&gt; &lt;head&gt; &lt;script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.16/p5.min.js"&gt;&lt;/script&gt; &lt;style&gt; body { padding: 0;

CodingIsFun 1420

OOP为什么存在:面向对象编程如何解决过程式开发的痛点

面向对象编程(OOP)是当今主流编程范式,但很多开发者只停留在会写class的层面,并未理解它背后的设计初衷。随着软件规模增大,过程式编程的全局变量失控、数据与操作分离、复用粒度不足等问题会迅速放大,而OOP通过封装、继承、多态和抽象,将数据和操作绑定为对象,让状态变化可控、扩展更加安全。从银行账户到订单系统,再到PHP框架ThinkPHP的MVC架构,OOP在真实项目中的应用无不体现着“管理复杂度”的核心价值。本文从过程式与对象式的思维对比入手,结合具体代码案例,剖析OOP存在的真实原因,并指出过度设计、

weixin_34372728的博客 337

JavaScript强化教程 - 六步实现贪食蛇

本文为H5EDU机构官方的HTML5培训教程,主要介绍贪食蛇JavaScript强化教程1.首先创建div 并且给div加样式<divid="pannel"style="width:500px;height:500px;z-index:1;opacity:0.5"></div>给<style...>地图(div和表格)、所...

weixin_34248023的博客 91

如何在Interplanetary Postal Service中掌握飞船控制:从新手到专家的完整教程

Interplanetary Postal Service是一款引人入胜的月球着陆器类型游戏,融合了计算流体动力学元素,玩家需要精准控制飞船在复杂环境中安全着陆。本教程将帮助你从新手成长为飞船控制专家,掌握从基础操作到高级技巧的全部要点。 ## 🚀 快速上手:游戏核心机制与界面解析 在开始控制飞船前,先了解游戏的基本界面和核心系统。游戏使用WebGL技术渲染,主要文件结构包括: - **核

gitblog_00464的博客 509

html5网页中的表格教程,javascript程序设计_达内javascript教程-达内web前端培训

JavaScript基础 — 输出星星var oT1 = document.getElementById('txt1');var oT2 = document.getElementById('txt2');var oBtn = document.getElementById('btn1');oBtn.onclick=function(){oT2.value='';var value = Numbe...

weixin_29045001的博客 455

JS控制文本框内键盘上下左右键的焦点

JavaScript键盘上下左右控制文本框焦点的方法有很多,这里简单说两种方法: 方法一: 创建一个table的dom元素,包含5行4列的文本框,代码可在附件看到 基本思路是获取表单的行列数,监听键盘操作,通过DOM操作表格的行列来选取表格内的文本框。   方法二: 这个方法试用于动态创建多个文本框的情况,将所有的文本框划分为行列数组,为每个input设置id值,监听键盘操作设

婵blog--分享与交流 8414

用键盘控制div运动

<!DOCTYPE HTML> <html lang = "en"> <head> <meta charset = "UTF-8"/> <style> </style> </head> <body> <script> var div = document.createElement('div'); document.body.appendChild(div);

weixin_48727085的博客 155

JavaScript强化教程——DOM编程(两种控制div移动的方法)

本文为H5EDU机构官方HTML5培训教程,主要介绍:JavaScript强化教程——DOM编程(两种控制div移动的方法)第一种按钮控制首先 创建两个html按钮和一个div并给div一个样式inputtype="button"value="左"id="1"> <inputtype="button"value="右"id="2"> <...

weixin_34162401的博客 143

js键盘控制方块运动(自动运动,仅控制方向,到达屏幕边缘会自动反弹)

<style> * { padding: 0; margin: 0; } .box { width: 100px; height: 100px; background-color: #6ff; position: absolute; left: 0; top: 0; } </style> <div class="box"></div

Ga_b_c的博客 416
上一篇: js键盘事件全面控制
下一篇: JS屏蔽键盘
hjpengjava
博客等级 码龄18年 5粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值