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 相关文章推荐
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
Jun 14 Javascript
jquery下onpropertychange事件的绑定方法
Aug 01 Javascript
javascript jq 弹出层实例
Aug 25 Javascript
js 对小数加法精度处理示例说明
Dec 27 Javascript
javascript自动给文本url地址增加链接的方法分享
Jan 20 Javascript
javascript下拉列表中显示树形菜单的实现方法
Nov 17 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
Feb 25 Javascript
JavaScript数组方法大全(推荐)
Jul 05 Javascript
vue interceptor 使用教程实例详解
Sep 13 Javascript
vue swipe自定义组件实现轮播效果
Jul 03 Javascript
js神秘的电报密码 哈弗曼编码实现
Sep 10 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
Jan 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
一个php Mysql类 可以参考学习熟悉下
2009/06/21 PHP
windows中为php安装mongodb与memcache
2015/01/06 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
在网页里看flash的trace数据的js类
2009/01/10 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
jQuery EasyUI Dialog拖不下来如何解决
2015/09/28 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
Vue生命周期示例详解
2017/04/12 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
VueX模块的具体使用(小白教程)
2020/06/05 Javascript
python求素数示例分享
2014/02/16 Python
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
python利用正则表达式搜索单词示例代码
2017/09/24 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
Python魔法方法功能与用法简介
2019/04/04 Python
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
测绘工程个人的自我评价
2013/11/23 职场文书
大学生毕业的自我评价分享
2014/01/02 职场文书
终止劳动合同协议书
2014/04/14 职场文书
心理咨询承诺书
2014/05/20 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
欢送领导祝酒词
2015/08/12 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
员工试用期工作总结
2019/06/20 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书