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 相关文章推荐
Mootools 1.2教程 定时器和哈希简介
Sep 15 Javascript
JavaScript 模拟用户单击事件
Dec 31 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
Mar 18 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
Jan 24 Javascript
纯JS实现根据CSS的class选择DOM
Mar 22 Javascript
javascript获取checkbox复选框获取选中的选项
Aug 12 Javascript
jQuery背景插件backstretch使用指南
Apr 21 Javascript
javascript对浅拷贝和深拷贝的详解
Oct 14 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
Dec 18 Javascript
json对象及数组键值的深度大小写转换问题详解
Mar 30 Javascript
js实现固定区域内的不重叠随机圆
Oct 24 Javascript
基于ts的动态接口数据配置的详解
Dec 18 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中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
Javascript中的默认参数详解
2014/10/22 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
2019/07/16 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
极简的Python入门指引
2015/04/01 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
python django model联合主键的例子
2019/08/06 Python
Python定义函数实现累计求和操作
2020/05/03 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
民事诉讼代理词
2015/05/25 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
导游词之无锡东林书院
2019/12/11 职场文书
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫