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 相关文章推荐
jQuery Div中加载其他页面的实现代码
Feb 27 Javascript
jquery中使用ajax获取远程页面信息
Nov 13 Javascript
jquery 循环显示div的示例代码
Oct 18 Javascript
jquery 使用简明教程
Mar 05 Javascript
JavaScript返回网页中锚点数目的方法
Apr 03 Javascript
jQuery操作Table技巧大汇总
Jan 23 Javascript
解析jQueryEasyUI的使用
Nov 22 Javascript
AngularJS监听路由变化的方法
Mar 07 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
Mar 08 Javascript
简单两步使用node发送qq邮件的方法
Mar 01 Javascript
jquery向后台提交数组的代码分析
Feb 20 jQuery
详解vue路由
Aug 05 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通过header实现文本文件下载的代码
2010/08/08 PHP
php 随机排序广告的实现代码
2011/05/09 PHP
php中stdClass的用法分析
2015/02/27 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
js 居中漂浮广告
2010/03/21 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
针对JavaScript中this指向的简单理解
2016/08/26 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
python 美化输出信息的实例
2018/10/15 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
美国真皮手袋品牌:GiGi New York
2017/03/10 全球购物
销售行政专员岗位职责
2014/06/10 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
政审证明范文
2015/06/19 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server
68行Python代码实现带难度升级的贪吃蛇
2022/01/18 Python
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript