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 相关文章推荐
Package.js  现代化的JavaScript项目make工具
May 23 Javascript
基于jquery实现控制经纬度显示地图与卫星
May 20 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
Aug 27 Javascript
轻松搞定js表单验证
Oct 13 Javascript
JS无缝滚动效果实现方法分析
Dec 21 Javascript
vue-cli入门之项目结构分析
Apr 20 Javascript
Vue项目总结之webpack常规打包优化方案
Jun 06 Javascript
微信小程序实现左滑动删除效果
Mar 30 Javascript
layui实现下拉框三级联动
Jul 26 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
Sep 11 Javascript
基于js实现抽红包并分配代码实例
Sep 19 Javascript
Vue分页插件的前后端配置与使用
Oct 09 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
我的论坛源代码(一)
2006/10/09 PHP
PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
微信支付开发交易通知实例
2016/07/12 PHP
php源码的使用方法讲解
2019/09/26 PHP
js控制页面控件隐藏显示的两种方法介绍
2013/10/09 Javascript
JS 日期比较大小的简单实例
2014/01/13 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
javaScript基础详解
2017/01/19 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[00:32]DOTA2上海特级锦标赛 COL战队宣传片
2016/03/04 DOTA
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
python利用7z批量解压rar的实现
2019/08/07 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
简历自荐信
2013/12/02 职场文书
执行总经理岗位职责
2014/02/03 职场文书
英文求职信写作小建议
2014/02/16 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
2014年九一八事变演讲稿
2014/09/14 职场文书
简单的辞职信模板
2015/05/12 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
高一作文之暖冬
2019/11/09 职场文书