js键盘事件实现人物的行走


Posted in Javascript onJanuary 17, 2020

本文实例为大家分享了js键盘事件实现人物行走的具体代码,供大家参考,具体内容如下

描述:

小时候喜欢玩的一个游戏,魔塔,实现了人物的行走,以及跳跃,当然是2D的效果。

用到的图:

js键盘事件实现人物的行走

效果:

js键盘事件实现人物的行走

代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    html
    {
      background-color: deepskyblue;
    }
    div
    {
      width: 32px;
      height: 32px;
      background-image: url("img/Actor01-Braver03.png");
      position: absolute;
    }
  </style>
</head>
<body>
  <div></div>
  <script>
    var key=0;
    var bool=false;
    var speed=2;//每次行走的距离
    var actor;//人物div
    const HEIGHT=33;//人物的高
    const WIDTH=32;//人物的宽
    var arr=[1,3,2,0];//4排图像 代表 下 左 右 上
    var num=0;
    var jumpBool=false;
    var actorSkinSpeed=8;
    var jumpSpeed=-15;
    init();
    function init() {
      window.addEventListener("keydown",keyHandler);
      window.addEventListener("keyup",keyHandler);
      actor=document.querySelector("div");
      setInterval(animation,16);
      //按键驱动不能实现 实现的是通过按键触发相应动画 实现我们的人物的帧动画 跳转
    }
    
    function keyHandler(e) {
      bool=e.type==="keydown";
      key=e.keyCode;
      if(!bool){
        num=0;
        actor.style.backgroundPositionX=-num*WIDTH+"px";
      }
      if(key===32 && !jumpBool){//跳跃 空格驱动
        jumpBool=true;
      }
    }
    
    function animation() {
      jump();
      if(!bool)return;
      walk();//单方向行走 实现
      changeDirection();//方向确定时 内部行走的实现
    }
    
    function jump() {
      if(!jumpBool)return;
      jumpSpeed+=1;
      if(jumpSpeed===15){
        jumpBool=false;
        jumpSpeed=-15;
        return;
      }
      actor.style.top=actor.offsetTop+jumpSpeed+"px";
    }
    
    function changeDirection() {
      actorSkinSpeed--;
      if(actorSkinSpeed>0) return;
      actorSkinSpeed=8;
      num++;
      if(num>3) num=0;
      actor.style.backgroundPositionX=-num*WIDTH+"px";
    }
 
    function walk() {
      switch (key){
        case 37://左 ×1 第二排
          actor.style.left=actor.offsetLeft-speed+"px";
          actor.style.backgroundPositionY=-arr[0]*HEIGHT+"px";
          break;
        case 38://上 ×3 第四排
          actor.style.top=actor.offsetTop-speed+"px";
          actor.style.backgroundPositionY=-arr[1]*HEIGHT+"px";
          break;
        case 39://右 ×2 第三排
          actor.style.left=actor.offsetLeft+speed+"px";
          actor.style.backgroundPositionY=-arr[2]*HEIGHT+"px";
          break;
        case 40://下 ×0 第一排
          actor.style.top=actor.offsetTop+speed+"px";
          actor.style.backgroundPositionY=-arr[3]*HEIGHT+"px";
          break;
 
      }
    }
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
Mar 12 Javascript
jQuery基本过滤选择器使用介绍
Apr 18 Javascript
Javascript中克隆一个数组的实现代码
Dec 06 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
Feb 04 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
Feb 15 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
Nov 22 Javascript
jQuery中inArray方法注意事项分析
Jan 25 Javascript
vue 微信扫码登录(自定义样式)
Jan 06 Javascript
浅谈Vue static 静态资源路径 和 style问题
Nov 07 Javascript
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
Javascript节流函数throttle和防抖函数debounce
Dec 03 Javascript
最新最全的手机号验证正则表达式
Feb 24 Javascript
javascript实现简易的计算器
Jan 17 #Javascript
JavaScript简易计算器制作
Jan 17 #Javascript
vue下axios拦截器token刷新机制的实例代码
Jan 17 #Javascript
js布局实现单选按钮控件
Jan 17 #Javascript
vue 查看dist文件里的结构(多种方式)
Jan 17 #Javascript
JavaScript数组去重实现方法小结
Jan 17 #Javascript
JS面向对象之多选框实现
Jan 17 #Javascript
You might like
DC游戏Steam周三特惠 《蝙蝠侠》阿卡姆系列平史低
2020/04/09 欧美动漫
php使用json_encode对变量json编码
2014/04/07 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
浅谈JavaScript正则表达式分组匹配
2015/04/10 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
jQuery使用方法
2017/02/04 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
详解vue-cli3使用
2018/08/14 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
python获取外网ip地址的方法总结
2015/07/02 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
Python如何获取文件指定行的内容
2020/05/27 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
如何使用Python调整图像大小
2020/09/26 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
产品销售员岗位职责
2013/12/18 职场文书
《小熊住山洞》教学反思
2014/02/21 职场文书
户外活动总结
2015/02/04 职场文书
2016银行求职自荐信
2016/01/28 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS
Java 语言中Object 类和System 类详解
2021/07/07 Java/Android