JavaScript实现的使用键盘控制人物走动实例


Posted in Javascript onAugust 27, 2014

其实这个示例用到了js的两个核心时间,键盘事件onkeydown,周期执行事件setInterval。

实现效果

当按下键盘某个键时网页中的人物实现相应的动作,达到利用键盘控制走动效果

实现步骤

一、预订键值作用:

w:向上
s:向下
a:向左
d:向右
空格:停止

二、预订键值后,要能捕获按键事件以及判断用户按的是哪个键?

捕获键盘事件可以用onkeydown
获取键值码可以用event.keyCode
 
三、用setInterval周期执行事件替换图片

替换图片是为了实现任务走动效果
但要注意使用clearInterval清除周期执行,否则会越走越快

示例代码:

<html>
	<head>
		<meta charset="utf-8" />
		<title>人物走动</title>
	</head>
	<body onkeydown="show()">
		<ul style="posttion:absolute;border:1px solid #999;list-style:none;width:150px;padding:20px;background:#ffffef;">
			<li>w:向上</li>
			<li>s:向下</li>
			<li>a:向左</li>
			<li>d:向右</li>
			<li>空格:停止</li>
			<li style="margin-top:20px;"><u><a href="https://3water.com">三水点靠木</a></u></li>
		</ul>
		<div style="position:absolute;top:0;left:0" id='di'><img src="//img.jbzj.com/file_images/article/201408/201482791327688.gif?201472791345" id="img"></div>
		<script>
			var img1='//img.jbzj.com/file_images/article/201408/201482791656841.gif?201472791722';
			var img2='//img.jbzj.com/file_images/article/201408/201482791327688.gif?201472791345';
			var x=0;
			var y=0;
			var xs=0;
			var ys=0;
			var flag=true;
			var zq=null;
			function ks(){
				zq=setInterval(function(){	
					var s=document.getElementById('img');	
					var str=s.src;
					var area=document.getElementById('di');
					var xpos=parseInt(area.style.left);
					var ypos=parseInt(area.style.top);
					x=x+xs;
					y=y+ys;
					area.style.left=x;
					area.style.top=y;
					var pos=str.lastIndexOf('/')+1;
					var hz=str.substr(pos);
					if(hz==img1){
						s.src= img2;
					}else{
						s.src= img1;
					}				
				},50);
			}
			ks();

			function show(){
				var sz=window.event.keyCode;
				switch(sz){
					case 87:
						img1='//img.jbzj.com/file_images/article/201408/ren_h_1.gif';
						img2='//img.jbzj.com/file_images/article/201408/ren_h_2.gif';
						ys=-5;
						xs=0;
						break;
					case 65:
						img1='//img.jbzj.com/file_images/article/201408/ren_l_1.gif';
						img2='//img.jbzj.com/file_images/article/201408/ren_l_2.gif';
						xs=-5;
						ys=0;
						break;
					case 68:
						img1='//img.jbzj.com/file_images/article/201408/ren_r_1.gif';
						img2='//img.jbzj.com/file_images/article/201408/ren_r_2.gif';
						xs=5;
						ys=0;
						break;
					case 83:
						img1='//img.jbzj.com/file_images/article/201408/ren_q_1.gif';
						img2='//img.jbzj.com/file_images/article/201408/ren_q_2.gif';
						ys=5;
						xs=0;
						break;
					case 32:
					  if(flag){
						  clearInterval(zq);
						  flag=false;
						  break;
					   }
					case 13:
					 if(!flag){
						 ks();
						 flag=true;
						break;
					  }
				}
			}
		</script>
	</body>
</html>
Javascript 相关文章推荐
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
Mar 07 Javascript
JQuery的ajax获取数据后的处理总结(html,xml,json)
Jul 14 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
Jan 02 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
Aug 22 Javascript
Javascript实现代码折叠功能
Aug 25 Javascript
原生js实现返回顶部缓冲效果
Jan 18 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
Mar 03 Javascript
JS对象的深度克隆方法示例
Mar 16 Javascript
Vue组件中prop属性使用说明实例代码详解
May 31 Javascript
jQuery实现动态生成年月日级联下拉列表示例
May 11 jQuery
Vue组件之高德地图地址选择功能的实例代码
Jun 21 Javascript
javascript之分片上传,断点续传的实际项目实现详解
Sep 05 Javascript
JavaScript截取字符串的2个函数介绍
Aug 27 #Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
Aug 27 #Javascript
jQuery中的read和JavaScript中的onload函数的区别
Aug 27 #Javascript
javascript实现的一个随机点名功能
Aug 26 #Javascript
JS按回车键实现登录的方法
Aug 25 #Javascript
在JavaScript中重写jQuery对象的方法实例教程
Aug 25 #Javascript
一个支持任意尺寸的图片上下左右滑动效果
Aug 24 #Javascript
You might like
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
2015/05/11 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
Yii2增删改查之查询 where参数详细介绍
2016/08/08 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
接收键盘指令的脚本
2006/06/26 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
围观tangram js库
2010/12/28 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
微信小程序开发背景图显示功能
2018/08/08 Javascript
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
Python通过类的组合模拟街道红绿灯
2020/09/16 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
陈欧广告词
2014/03/14 职场文书
法人委托书范本
2014/04/04 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
党员自评材料范文
2014/12/17 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL