微信小程序自定义扫码功能界面的实现代码


Posted in Javascript onJuly 02, 2020

小程序的一个扫码页面,扫码界面一直开着,同时可以处理其他功能,如下:

微信小程序自定义扫码功能界面的实现代码

由于直接调用微信的scanCode,无法自定义界面,所以只能使用原生组件camera,完成这个功能,关于扫描框的四个角的图片,就自己画一下吧,中间的移动横线,使用了小程序的动画功能,在原生camera组件上,覆盖需要用到cover-view和cover-image,同时加入了提示音

/**scan.wxss**/
.scan-view {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  background-color: #B9BEC4;
  position: fixed;
  align-items: center;
  justify-content: space-around;
}
 
.scan-border {
  width: 94%;
  height: 94%;
  border: 6rpx solid #08FDFE;
  border-radius: 10rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
}
 
.scan-camera {
  width: 500rpx;
  height: 500rpx;
  border-radius: 6rpx;
  margin: 30rpx;
}
 
.cover-corner {
  width: 80rpx;
  height: 80rpx;
  position: absolute;
}
 
.cover-left-top {
  left: 0;
  top: 0;
}
 
.cover-right-top {
  right: 0;
  top: 0;
}
 
.cover-left-bottom {
  left: 0;
  bottom: 0;
}
 
.cover-right-bottom {
  right: 0;
  bottom: 0;
}
 
.scan-animation {
  position: absolute;
  top: -10rpx;
  left: 10rpx;
  width: 480rpx;
  height: 8rpx;
  background-color: #08FDFE;
  border-radius: 50%;
}
<!--scan.wxml-->
<view class="scan-view">
  <view class='scan-border'>
    
    <camera class='scan-camera' mode="scanCode" binderror="cameraError" bindscancode='scancode' frame-size='large'>
      <cover-image class='cover-corner cover-left-top' src='/images/left-top.png'></cover-image>
      <cover-image class='cover-corner cover-right-top' src='/images/right-top.png'></cover-image>
      <cover-image class='cover-corner cover-left-bottom' src='/images/left-bottom.png'></cover-image>
      <cover-image class='cover-corner cover-right-bottom' src='/images/right-bottom.png'></cover-image>
      
      <cover-view class='scan-animation' animation="{{animation}}"></cover-view>
    </camera>
    <!-- 这里可以处理其他内容 -->
  </view>
</view>
// scan.js
// 移动动画
let animation = wx.createAnimation({});
// 提示音
let innerAudioContext = wx.createInnerAudioContext()
innerAudioContext.src = '/images/beep.mp3'
 
Page({
  data: {
    
  },
  onLoad: function () {
    
  },
  onShow(){
    this.donghua()
  },
  donghua(){
    var that = this;
    // 控制向上还是向下移动
    let m = true
    
    setInterval(function () {
      if (m) {
        animation.translateY(250).step({ duration: 3000 })
        m = !m;
      } else {
        animation.translateY(-10).step({ duration: 3000 })
        m = !m;
      }
 
      that.setData({
        animation: animation.export()
      })
    }.bind(this), 3000)
  },
  scancode(e){
    // 提示音
    innerAudioContext.play()
    // 校验扫描结果,并处理
    let res = e.detail.result
  }
})

总结

到此这篇关于微信小程序自定义扫码功能界面的实现代码的文章就介绍到这了,更多相关微信小程序自定义扫码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js最简单的拖拽效果实现代码
Sep 24 Javascript
标题过长使用javascript按字节截取字符串
Apr 24 Javascript
JS给超链接加确认对话框的方法
Feb 24 Javascript
JavaScript 不支持 indexof 该如何解决
Mar 30 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
Aug 17 Javascript
ES6实现的遍历目录函数示例
Apr 07 Javascript
Node.js 8 中的重要新特性
Jun 28 Javascript
bootstrapvalidator之API学习教程
Jun 29 Javascript
微信小程序中时间戳和日期的相互转换问题
Jul 09 Javascript
vue如何截取字符串
May 06 Javascript
深入浅出vue图片路径的实现
Sep 04 Javascript
Elasticsearch实现复合查询高亮结果功能
Sep 10 Javascript
JS字符串和数组如何实现相互转化
Jul 02 #Javascript
Vue父子之间值传递的实例教程
Jul 02 #Javascript
JS出现404错误原理及解决方案
Jul 01 #Javascript
vue结合el-upload实现腾讯云视频上传功能
Jul 01 #Javascript
详解vue3.0 diff算法的使用(超详细)
Jul 01 #Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
Jul 01 #Javascript
通过angular CDK实现页面元素拖放的步骤详解
Jul 01 #Javascript
You might like
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
弹出广告特效代码(一个IP只弹出一次)
2007/05/11 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
介绍Python的@property装饰器的用法
2015/04/28 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
Python对象转换为json的方法步骤
2019/04/25 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
Keras实现DenseNet结构操作
2020/07/06 Python
Python 如何实现访问者模式
2020/07/28 Python
彻底搞懂python 迭代器和生成器
2020/09/07 Python
IE9对HTML5中部分属性不支持的原因分析
2014/10/15 HTML / CSS
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
计算机专业个人简短的自我评价
2013/10/23 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
新闻报道策划方案
2014/06/11 职场文书
2014年车间工作总结
2014/11/21 职场文书
校本课程教学计划
2015/01/19 职场文书
公司给客户的感谢信
2015/01/23 职场文书
趣味运动会广播稿
2015/08/19 职场文书