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 相关文章推荐
jquery打开直接跳到网页最下面、最低端实现代码
Apr 22 Javascript
更快的异步执行(setTimeout多浏览器)
Aug 12 Javascript
javascript中JSON.parse()与eval()解析json的区别
May 19 Javascript
图解prototype、proto和constructor的三角关系
Jul 31 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
Feb 15 Javascript
微信小程序实现折叠面板
Jan 31 Javascript
jQuery中DOM常见操作实例小结
Aug 01 jQuery
构建Vue大型应用的10个最佳实践(小结)
Nov 07 Javascript
ElementUI中el-tree节点的操作的实现
Feb 27 Javascript
vue 实现一个简单的全局调用弹窗案例
Sep 10 Javascript
vue 如何从单页应用改造成多页应用
Oct 23 Javascript
浅析vue中的nextTick
Dec 28 Vue.js
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加MYSQL服务器
2006/10/09 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
php数组的一些常见操作汇总
2011/07/17 PHP
PHP中获取文件扩展名的N种方法小结
2012/02/27 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
javascript 写类方式之二
2009/07/05 Javascript
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
小程序input数据双向绑定实现方法
2019/10/17 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
Vue select 绑定动态变量的实例讲解
2020/10/22 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
运动会领导邀请函
2014/02/05 职场文书
三字经教学反思
2014/04/26 职场文书
小学生志愿者活动方案
2014/08/23 职场文书
教师节倡议书
2014/08/30 职场文书
2015年财政所工作总结
2015/04/25 职场文书
《植树问题》教学反思
2016/03/03 职场文书
Python字符串格式化方式
2022/04/07 Python
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js