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


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实现数组去重、判断数组以及对象中的内容是否相同
Nov 29 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
Jan 24 Javascript
删除条目时弹出的确认对话框
Jun 05 Javascript
Javascript中的迭代、归并方法详解
Jun 14 Javascript
JS动态计算移动端rem的解决方案
Oct 14 Javascript
RequireJs的使用详解
Feb 19 Javascript
从零学习node.js之mysql数据库的操作(五)
Feb 24 Javascript
Vue2.0结合webuploader实现文件分片上传功能
Mar 09 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
Apr 25 Javascript
重置Redux的状态数据的方法实现
Nov 18 Javascript
vue引用外部JS的两种种方法
Jan 28 Javascript
vue实现移动端div拖动效果
Mar 03 Vue.js
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执行速度全攻略(下)
2006/10/09 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
jQuery中append()方法用法实例
2015/01/08 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
javascript操作cookie
2017/01/17 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
Vue 源码分析之 Observer实现过程
2018/03/29 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
vue component 中引入less文件报错 Module build failed
2019/04/17 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
有趣的python小程序分享
2017/12/05 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
药学专业毕业生求职信
2013/10/20 职场文书
高中自我评价分享
2013/12/05 职场文书
竞选演讲稿范文
2013/12/28 职场文书
迎新晚会主持词
2014/03/24 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
Jsonp劫持学习
2021/04/01 PHP
python元组打包和解包过程详解
2021/08/02 Python
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技