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 相关文章推荐
js 页面输出值
Nov 30 Javascript
WEB高性能开发之疯狂的HTML压缩
Jun 19 Javascript
myFocus slide3D v1.1.0 使用方法与下载
Jan 12 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
Feb 02 Javascript
灵活的理解JavaScript中的this指向
Feb 25 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
Apr 20 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
Oct 15 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
Jul 10 jQuery
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
Aug 17 Javascript
layui 对table中的数据进行转义的实例
Sep 12 Javascript
JavaScript实现H5接金币功能(实例代码)
Feb 22 Javascript
关于JavaScript 中 if包含逗号表达式
Nov 27 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
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
批量修改RAR文件注释的php代码
2010/11/20 PHP
php cookies中删除的一般赋值方法
2011/05/07 PHP
php实现分页显示
2015/11/03 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
深入分析Cookie的安全性问题
2015/03/01 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
Vue事件修饰符native、self示例详解
2019/07/09 Javascript
详解Vite的新体验
2021/02/22 Javascript
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
用Python抢过年的火车票附源码
2015/12/07 Python
python PyTorch预训练示例
2018/02/11 Python
遗传算法python版
2018/03/19 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
Django视图扩展类知识点详解
2019/10/25 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
Internet体系结构
2014/12/21 面试题
《油菜花开了》教学反思
2014/02/22 职场文书
2015年外联部工作总结
2015/04/03 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
详解在OpenCV中如何使用图像像素
2022/03/03 Python
spring 项目实现限流方法示例
2022/07/15 Java/Android
Go语言编译原理之变量捕获
2022/08/05 Golang