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,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
Apr 15 Javascript
JavaScript聚焦于第一个字段的代码
Oct 15 Javascript
window.open不被拦截的实现代码
Aug 22 Javascript
js比较和逻辑运算符的介绍
Mar 10 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
Aug 09 Javascript
浅析javascript中function 的 length 属性
May 27 Javascript
jQuery中wrapAll()方法用法实例
Jan 16 Javascript
jQuery EasyUI datagrid实现本地分页的方法
Feb 13 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
Nov 06 Javascript
JavaScript执行环境及作用域链实例分析
Aug 01 Javascript
对angularJs中自定义指令replace的属性详解
Oct 09 Javascript
layui 弹出删除确认界面的实例
Sep 06 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 上传文件的方法(类)
2009/07/30 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
记录一次排查PHP脚本执行卡住的问题
2016/12/27 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
vue 中使用print.js导出pdf操作
2020/11/13 Javascript
js实现随机点名功能
2020/12/23 Javascript
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
Python快速排序算法实例分析
2017/11/29 Python
python正则实现提取电话功能
2018/02/24 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
python 使用值来排序一个字典的方法
2018/11/16 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
大学旷课检讨书
2014/01/28 职场文书
消防安全检查制度
2014/02/04 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技