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 常见操作实现方式和常用函数方法总结
May 06 Javascript
JavaScript EasyPager 分页函数
May 25 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
Mar 01 Javascript
JavaScript常用脚本汇总(二)
Mar 04 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
Aug 25 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
Dec 11 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
Jan 28 Javascript
jQuery文字提示与图片提示效果实现方法
Jul 04 Javascript
JavaScript实现邮箱地址自动匹配功能代码
Nov 28 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
Aug 15 Javascript
Vue实现移动端左右滑动效果的方法
Nov 27 Javascript
使用Vue 实现滑动验证码功能
Jun 27 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
php 数组的一个悲剧?
2011/05/11 PHP
PHP遍历数组的几种方法
2012/03/22 PHP
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
php switch语句多个值匹配同一代码块应用示例
2014/07/29 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
PDO::lastInsertId讲解
2019/01/29 PHP
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
BootStrap中
2016/12/10 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
基于React+Redux的SSR实现方法
2018/07/03 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
[49:08]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python实现代码行数统计示例分享
2014/02/10 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
python语音识别实践之百度语音API
2018/08/30 Python
python3对接mysql数据库实例详解
2019/04/30 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
简单了解python元组tuple相关原理
2019/12/02 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
2020/03/08 Python
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
数组越界问题
2015/10/21 面试题
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
维稳工作承诺书
2015/01/20 职场文书
Spring Cloud 中@FeignClient注解中的contextId属性详解
2021/09/25 Java/Android