vue制作抓娃娃机的示例代码


Posted in Javascript onApril 17, 2020

去年为联通制作双十一活动,做四个小游戏:‘配对消消乐'、移动拼图、抓娃娃、倒计时。 现在先做来分享一下制作抓娃娃游戏时的经验 先上效果图

vue制作抓娃娃机的示例代码

游戏规则:在指定时间内抓到上图四张卡片为挑战成功。 现在直接说游戏主要内容:娃娃滚动、爪子向下抓取、抓到卡片 废话不多说直接上代码!(此样式是根据需求而定)

<!--布局样式-->
<div class="game">
  <!--爪子-->
  <div class="paw">
   <div class="pawer"></div>
   <div class="pawerPic">
   <img src="./../assets/img/zhuashou.png" class="lose" />
   <div class="win" v-if="gzShow2">
    <img :src="t_img" />
   </div>
   </div>
  </div>
  <!--区域-->
  <div class="area">
   <!--娃娃滚动-->
   <div id="pack" ref="pack">
   <div id="sel1" class="father" ref="imgs">
    <img
    v-for="img in imgs"
    :class="img.isSuc ? 'yes' : 'no'"
    :src="img.img"
    :key="img.id"
    :alt="img.isSuc"
    />
   </div>
   </div>
  </div>
  <span class="button" @click="zhua"></span>
  </div>
// css 
.game {
  width: 80%;
  height: 730px;
  background: url(./../assets/img/interface_1.png) no-repeat;
  background-size: 100%;
  animation: bg infinite 0.6s;
  position: relative;
  top: -60px;
  left: 0;
  z-index: 2;
  .paw {
  position: relative;
  top: 10%;
  }
  .pawer {
  width: 20px;
  background: rgb(170, 219, 254);
  height: 10px;
  position: absolute;
  top: 20px;
  left: 51%;
  margin-left: -15px;
  border-left: 1px solid rgba(42, 59, 156, 0.7);
  border-right: 1px solid rgba(42, 59, 156, 0.7);
  }
  .pawerPic {
  width: 95px;
  // height:85px;
  position: absolute;
  top: 30px;
  left: 51%;
  margin-left: -55px;
  img {
   width: 100%;
  }
  .win {
   position: absolute;
   bottom: -60px;
  }
  }
  .area {
  width: 100%;
  height: 500px;
  // overflow:hidden;
  position: absolute;
  // top:40px;
  left: 0;
  bottom: 40px;
  }
  /*娃娃滚动*/
  #pack {
  width: 80%;
  white-space: nowrap;
  overflow: hidden;
  position: absolute;
  bottom: 60px;
  left: 10%;
  #sel1 {
   display: block;
   img {
   display: block;
   width: 130px;
   height: 150px;
   float: left;
   margin-left: 20px;
   }
  }
  }
  .button {
  display: block;
  width: 130px;
  height: 90px;
  background: url(./../assets/img/button.png) no-repeat;
  background-size: 100%;
  position: absolute;
  bottom: 20px;
  left: 40%;
  }
 }

接下来就是卡片滚动,设置定时器,给卡片模块设置transform 让卡片从右向左匀速移动。

mounted() {
 this.wawa();
 this.talon = $(".pawerPic").offset().left + 100; // 首先获取爪子的位置(这里是固定的)
 }
wawa() {
  var pack = this.$refs.pack,
  width = $("#pack").width(),
  imgsWidth = (this.imgs.length * width) / 3,
  initLeft = 0;

  this.chatTimer = setInterval(function() {
  initLeft++;

  if (imgsWidth - initLeft < width + 60) {
   initLeft = 0;
  }
  $("#sel1").css({
   width: imgsWidth,
   transform: "translateX(-" + initLeft + "px)"
  });
  }, 15);
 },

再接着就是点击按钮控制爪子上下移动抓取卡片。 首先固定爪子的位置,上图代码中mounted里面的talon,然后设置爪子到下面的终止距离(差不多能够到卡片),为爪子设置动画改变top值,拉长绳子改变height值(因为爪子和绳子是分开的)。 当爪子到达下面时,获取每个卡片的位置,与爪子当前位置作比较,看爪子是否在某个卡片的指定抓取区域内来判断是否抓到卡片,然后上升。 上代码!!!


代码全部贴上了,很多功能都是因为自己的需求去加的。 第一次写文章,可能具体的表述不清楚。

到此这篇关于vue制作抓娃娃机的示例代码的文章就介绍到这了,更多相关vue 抓娃娃机内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
IE 下的只读 innerHTML
Aug 21 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
Aug 13 Javascript
js返回上一页并刷新代码整理
Dec 21 Javascript
ExtJs中gridpanel分组后组名排序实例代码
Dec 02 Javascript
jQuery中last()方法用法实例
Jan 06 Javascript
JavaScript之underscore_动力节点Java学院整理
Jul 03 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
Sep 02 Javascript
swiper插件自定义切换箭头按钮
Dec 28 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
Dec 29 Javascript
详解vue配置后台接口方式
Mar 29 Javascript
小程序分页实践之编写可复用分页组件
Jul 18 Javascript
axios实现简单文件上传功能
Sep 25 Javascript
Vue+tracking.js 实现前端人脸检测功能
Apr 16 #Javascript
tracking.js实现前端人脸识别功能
Apr 16 #Javascript
electron 如何将任意资源打包的方法步骤
Apr 16 #Javascript
vue中keep-alive内置组件缓存的实例代码
Apr 16 #Javascript
详解Nuxt内导航栏的两种实现方式
Apr 16 #Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
Apr 16 #Javascript
vue下canvas裁剪图片实例讲解
Apr 16 #Javascript
You might like
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
javascript 异常处理使用总结
2009/06/21 Javascript
基于jQuery的可以控制左右滚动及自动滚动效果的代码
2010/07/25 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
js弹出div并显示遮罩层
2014/02/12 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
Vue+penlayers实现多边形绘制及展示
2020/12/24 Vue.js
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
Python内置数据类型详解
2014/08/18 Python
Python使用py2exe打包程序介绍
2014/11/20 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
自学python的建议和周期预算
2019/01/30 Python
使用Python制作表情包实现换脸功能
2019/07/19 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
Python面向对象编程基础实例分析
2020/01/17 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
学习党章思想汇报
2014/01/07 职场文书
庆元旦广播稿
2014/02/10 职场文书
技校学生个人职业生涯规划范文
2014/03/03 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
pytorch加载预训练模型与自己模型不匹配的解决方案
2021/05/13 Python
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
一级电子管军用接收机测评
2022/04/05 无线电
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js