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 相关文章推荐
JavaScript 三种创建对象的方法
Oct 16 Javascript
jqgrid 表格数据导出实例
Nov 21 Javascript
JQuery页面地址处理插件jqURL详解
May 03 Javascript
微信小程序  简单实例(阅读器)的实例开发
Sep 29 Javascript
jstl中判断list中是否包含某个值的简单方法
Oct 14 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
Jan 04 Javascript
vue中添加mp3音频文件的方法
Mar 02 Javascript
JS中原始值和引用值的储存方式示例详解
Mar 23 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
Jul 03 Javascript
vue项目移动端实现ip输入框问题
Mar 19 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
May 23 Javascript
Vue 一键清空表单的实现方法
Feb 07 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调用Java对象的方法
2006/10/09 PHP
3.从实例开始
2006/10/09 PHP
php程序的国际化实现方法(利用gettext)
2011/08/14 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
新手入门常用代码集锦
2007/01/11 Javascript
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
微信小程序基于picker实现级联菜单
2019/02/15 Javascript
ant design实现圈选功能
2019/12/17 Javascript
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
python Opencv将图片转为字符画
2021/02/19 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
Python装饰器用法与知识点小结
2020/03/09 Python
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
描述内存分配方式以及它们的区别
2016/10/15 面试题
董事长秘书岗位职责
2013/11/29 职场文书
秋季校运动会广播稿
2014/02/23 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
房地产广告词大全
2014/03/19 职场文书
大一新生学期自我评价
2014/04/09 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
2015中秋祝酒词
2015/08/12 职场文书
django 认证类配置实现
2021/11/11 Python
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript