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 相关文章推荐
关于html+ashx开发中几个问题的解决方法
Jul 18 Javascript
javascript ajax 仿百度分页函数
Oct 29 Javascript
JS批量操作CSS属性详细解析
Dec 16 Javascript
jquery中load方法的用法及注意事项说明
Feb 22 Javascript
javascript相关事件的几个概念
May 21 Javascript
Javascript 调用 ActionScript 的简单方法
Sep 22 Javascript
JS实现“隐藏与显示”功能(多种方法)
Nov 24 Javascript
基于Two.js实现星球环绕动画效果的示例
Nov 06 Javascript
浅谈mvvm-simple双向绑定简单实现
Apr 18 Javascript
angularjs的单选框+ng-repeat的实现方法
Sep 12 Javascript
jquery 验证用户名是否重复代码实例
May 14 jQuery
jQuery实现鼠标移入显示蒙版效果
Jan 11 jQuery
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
PHP 开发工具
2006/12/06 PHP
PHP编码规范之注释和文件结构说明
2010/07/09 PHP
windows下开发并编译PHP扩展的方法
2011/03/18 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
PHP中如何使用Redis接管文件存储Session详解
2018/11/28 PHP
PHP crc32()函数讲解
2019/02/14 PHP
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
js实现3D旋转效果
2020/08/18 Javascript
python中global与nonlocal比较
2014/11/21 Python
复习Python中的字符串知识点
2015/04/14 Python
Python实现把类当做字典来访问
2019/12/16 Python
python GUI计算器的实现
2020/10/09 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
CSS3实现自定义Checkbox特效实例代码
2017/04/24 HTML / CSS
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
反腐倡廉标语
2014/06/24 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
css3应用示例:新增的选择器
2022/03/16 HTML / CSS