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 相关文章推荐
JavaScript 开发中规范性的一点感想
Jun 23 Javascript
js 强制弹出窗口代码研究-又一款代码
Mar 20 Javascript
javascript中的float运算精度实例分析
Aug 21 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
Jun 12 Javascript
JavaScript学习小结(一)——JavaScript入门基础
Sep 02 Javascript
javascript获取wx.config内部字段解决微信分享
Mar 09 Javascript
微信小程序之蓝牙的链接
Sep 26 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
Jan 26 Javascript
js自定义trim函数实现删除两端空格功能
Feb 09 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
Sep 10 Javascript
原生JS实现自定义下拉单选选择框功能
Oct 12 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
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
H5实现仿flash效果的实现代码
2017/09/29 Javascript
PHPStorm中如何对nodejs项目进行单元测试详解
2019/02/28 NodeJs
node中IO以及定时器优先级详解
2019/05/10 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
python ip正则式
2009/05/07 Python
Python中的包和模块实例
2014/11/22 Python
详解Python中的各种函数的使用
2015/05/24 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
Python实现KNN邻近算法
2021/01/28 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
Python用csv写入文件_消除空余行的方法
2018/07/06 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
Python tornado上传文件的功能
2020/03/26 Python
解决jupyter notebook import error但是命令提示符import正常的问题
2020/04/15 Python
Python参数传递实现过程及原理详解
2020/05/14 Python
python实现三壶谜题的示例详解
2020/11/02 Python
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
银行实习鉴定
2013/12/13 职场文书
个人授权委托书范本
2014/04/03 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
医院合作意向书范本
2015/05/08 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
浅谈react useEffect闭包的坑
2021/06/08 Javascript
Golang gRPC HTTP协议转换示例
2022/06/16 Golang