小程序/js/uni订单金额播放

2023-10-26

之前发现直接播放会自动中断,所以纠结了半天

先说思路,首先金额转成字符串,然后截取,得到两段数组,然后遍历,前段需要追加单位,后段小数点后,之后得到需要播放的音频数组,在每段播放完进行完后播放下一段。

语音包有点问题就不放了,还是看代码吧

  data: {
     v_if:false,
     money:0,
     video_list:[],//语音列表
     now_play:0,
     max_play:0,
     now_video_src:'',
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    wx.setNavigationBarTitle({
      title: '支付成功'
    })

    this.my_video = wx.createInnerAudioContext();
    console.log(options);
    this.setData({
      money:options.money
    })
    let num = options.money;
 
    let video_url_0  = '../../static/video/0.mp3';
    let video_url_1  = '../../static/video/1.mp3';
    let video_url_2  = '../../static/video/2.mp3';
    let video_url_3  = '../../static/video/3.mp3';
    let video_url_4  = '../../static/video/4.mp3';
    let video_url_5  = '../../static/video/5.mp3';
    let video_url_6  = '../../static/video/6.mp3';
    let video_url_7  = '../../static/video/7.mp3';
    let video_url_8  = '../../static/video/8.mp3';
    let video_url_9  = '../../static/video/9.mp3';
    let video_url_10  = '../../static/video/10.mp3';
    let video_url_dian  = '../../static/video/点.mp3';
    let video_url_yuan  = '../../static/video/元.mp3';
    let video_url_bai  = '../../static/video/百.mp3';
    let video_url_qian  = '../../static/video/千.mp3';
    let video_url_wan  = '../../static/video/万.mp3';

    let num_string = num.toString();
    let now_num = num_string.split('.');//截取
    // console.log(now_num);
    // console.log(now_num[0]);
    // console.log(now_num[1]);
    this.video_list = [];//每次重置语音列表
    
    for(let i = 0;i<now_num[0].length;i++){
        switch (now_num[0][i]){
          case '0':
            this.add_video(video_url_0);
          break;
          case '1':
            this.add_video(video_url_1);
          break; 
          case '2':
            this.add_video(video_url_2);
          break; 
          case '3':
            this.add_video(video_url_3);
          break;
          case '4':
            this.add_video(video_url_4);
          break;
          case '5':
            this.add_video(video_url_5);
          break;
          case '6':
            this.add_video(video_url_6);
          break;
          case '7':
            this.add_video(video_url_7);
          break;
          case '8':
            this.add_video(video_url_8);
          break;
          case '9':
            this.add_video(video_url_9);
          break;
          case '.':
             this.add_video(video_url_dian);
          default:
        } 
        //处理单位
        let now_company = now_num[0].length-i;
        console.log('now_company'+now_company);
        if(now_num[0][i] != 0){
          switch(now_company){
            case 2:
              this.add_video(video_url_10);
            break;
            case 3:
              this.add_video(video_url_bai);
            break;
            case 4:
              this.add_video(video_url_qian);
            break;
            case 5:
              this.add_video(video_url_wan);
            break;
          }
        }
     

    }    
    if(now_num[1]){
      this.add_video(video_url_dian);
      for(let i = 0;i<now_num[1].length;i++){
        console.log(now_num[1][i]);
        switch (now_num[1][i]){
          case '0':
            this.add_video(video_url_0);
          break;
          case '1':
            this.add_video(video_url_1);
          break; 
          case '2':
            this.add_video(video_url_2);
          break; 
          case '3':
            this.add_video(video_url_3);
          break;
          case '4':
            this.add_video(video_url_4);
          break;
          case '5':
            this.add_video(video_url_5);
          break;
          case '6':
            this.add_video(video_url_6);
          break;
          case '7':
            this.add_video(video_url_7);
          break;
          case '8':
            this.add_video(video_url_8);
          break;
          case '9':
            this.add_video(video_url_9);
          break;
           
        }  

    } 
    }
    this.add_video(video_url_yuan);

    var video_list = this.video_list;
    console.log(video_list);
    this.data.max_play = video_list.length;
    this.play_video();
    
  },
 add_video(e){
    // console.log(e)
    let video_list =this.video_list;
    video_list.push(e);
    this.video_list = video_list;
    console.log( this.video_list); 
  },
  play_video(){ 
    var that = this;
    that.setData({
      video_status: false
    }) 

    
    that.now_video_src = that.video_list[that.data.now_play ]
    console.log(that.now_video_src);
   //开始播放语音
   const ordervideo =  wx.createInnerAudioContext()//新建一个createInnerAudioContext();
  // const ordervideo =   that.my_video; 
   ordervideo.autoplay = true;//音频自动播放设置
   ordervideo.src =   that.now_video_src;//链接到音频的地址 
   ordervideo.volume = 9;//音量
   ordervideo.play();
   ordervideo.onPlay((res) => {
   });
   ordervideo.onEnded((res) => {
    console.log('播放完成');
    // console.log( that.data.max_play);
    console.log(that.data.now_play);
    if(that.data.now_play < that.data.max_play){
      let now_play = Number(that.data.now_play)+1;
       console.log(now_play);
      that.data.now_video_src = that.video_list[now_play];
      // that.now_play = now_play;
      that.data.now_play = now_play
      that.play_video(); 
    } 
     
   
  });
  
   ordervideo.onStop((res) => { 
  });
   ordervideo.onError((res) => {//打印错误
     // console.log(res.errMsg);//错误信息
     // console.log(res.errCode);//错误码
   })
  },
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小程序/js/uni订单金额播放 的相关文章

  • 【C/C++】智能指针

    文章目录 1 智能指针的原理 1 1RAII 1 2实现一个自己的智能指针 1 2 1拷贝出现的二次析构问题 2 标准库中的智能指针 2 1std auto ptr 2 2std unique ptr 2 3std shared ptr 2
  • ovs-vswitchd的启动分析

    ovs vswitchd的启动分析 无修改源码 一 主要数据结构和概念了解 1 概念 在 OVS 中 有几个非常重要的概念 Bridge Bridge 代表一个以太网交换机 Switch 一个主机中可以创建一个或者多个 Bridge 设备
  • 解决:DevTools failed to load SourceMap:... net::ERR_HTTP_RESPONSE_CODE_FAILURE的问题

    Google chrome开发人员控制台中一直报此错误 虽然只是一个警告 但是体验还是非常不好 先说解决方案 第一种 在Google chrome浏览器调试工具中 设置该调试工具 点开之后选择Settings 关闭此选项 虽然这种方式是隐藏
  • 小白的福音:零基础入门机器人操作系统ROS

    小小的机器人 如何运作 如何操作 作为一名程序员 你不想了解吗 今天就给大家解密 机器人操作系统ROS 今天分享的课程采用由浅入深 层层递进的讲解方式 让你0基础轻松入门ROS机器人操作系统 并利用ROS框架开发硬件驱动 课程亮点 1 课程
  • Numpy 实现全连接神经网络

    神经网络与深度学习实验报告 一 实验名称 Numpy 实现全连接神经网络 二 实验要求 用 python 的 numpy 模块实现全连接神经网络 网络结构为一个输入层 一个隐藏层 一个输出层 隐藏层的激活函数为 Relu 函数 输出层的激活
  • Qt系列文章之 QTabWidget

    上一篇文章介绍如何对QMessgeBox进行使用 本文紧接上文内容继续对Qt的窗体文件开发介绍 一般主界面会有很多控件和交互区域 如果把所有的控件都放在一个界面全部显示 整个界面就会显得非常臃肿繁琐 那么使用分页式的表格窗体布局就能将不同类
  • STM32 从APP跳入BootLoader问题

    在这次项目中 程序从APP跳入BootLoader主要遇到两个问题 做个记录 1 现象 跳入BootLoader后还没开始升级便重启 原因 APP程序中开启了独立看门狗 当跳入BootLoader时看门狗也继续计时 但并没有重新喂狗 因此导
  • uniapp开发日志

    bug 将Base64的编码解码看错 uniapp封装uni request方法 import utils from js utils js let debug false if process env NODE ENV developme

随机推荐

  • Advanced Computer Network Review(3)——BBR

    这是复习系列的第三篇 主要梳理BBR拥塞控制有关的一些要点 老师给出的复习要点如下 1 基于loss的拥塞控制存在什么问题 为什么 2 理解下面这张图 这篇文章的梳理部分参考了中科大郑烇老师 高级计算机网络 的相关部分 特此声明 一 基于l
  • windows命令行更改文件夹权限

    echo off rem windows命令行更改文件夹权限 Cacls命令使用格式如下 Cacls filename T E C G user perm R user P user perm D user Filename 显示访问控制列
  • Linux下如何查看分区文件系统类型

    1 fdisk l fdisk l 只能列出硬盘的分区表 容量大小以及分区类型 但看不到文件系统类型 2 df h df 命令是用来查看文件系统磁盘空间使用量的 但df 命令只会列出已挂载的文件系统信息 对于没有挂载的文件系统是查看不到的
  • LeetCode -数组数据的插入位置(二分法)

    搜索数组数据插入位置 给定一个排序数组和一个目标值 在数组中找到目标值 并返回其索引 如果目标值不存在于数组中 返回它将会被按顺序插入的位置 数组可能有重复数据 有重复数据时返回 插入到重复数据的第一个位置 示例 1 输入 1 3 6 7
  • Vuforia 官方Demo讲解

    官方原文地址 https library vuforia com articles Solution Native Sample Application Template 今天看到的36氪新闻 高通发布面向VR AR一体机的骁龙XR1芯片
  • MySQL的自定义排序函数 FIELD(str,str1,str2,str3,...)

    FIELD是mysql的自定义排序函数 ORDER BY FIELD str str1 str2 str3 说明 str是字段 str1 str2 是自定义排序的值 举例说明 以上两幅图就看懂FIELD 的用法了吧
  • Vue——get调用后端接口并将数据回显到table中

    get调用 呈现效果 动态获取后台数据 1 HTML lt template gt
  • vue —— 项目启动时无法识别es6的扩展语法

    启动项目报错 解决 ES6的拓展运算符报错 1 切换淘宝镜像 npm install g cnpm registry http registry npm taobao org cnpm install legacy peer deps sa
  • “三项能力超过ChatGPT”,科大讯飞星火大模型现场接受观众挑战,写稿制表PPT通通拿下...

    杨净 发自 合肥量子位 公众号 QbitAI 三项能力超过ChatGPT 1024将整体超过GPT水平 在科大讯飞星火认知大模型发布会现场 董事长刘庆峰拍着胸脯保证 引起现场掌声雷动 而真机演示效果和多场景产品展示直接把观众们看呆 信息量太
  • anaconda pytorch配置

    wvscode配置python编译器时 发现即使在右下角改变编译器版本 任然无法使用anaconda的python 通过在setting中搜索code runner 修改Execution Map中python u中python为anaco
  • JS anonymous:无名函数的使用

    这个无名函数名字是我起的 起这个名字的原因有两条 原因一是在改前端代码的时候发现这个东西 在调试台console用debug调试 会显示一个anonymous 但你发现他是一个函数 原因二是 这个在w3school上也有 在下面连接页面搜索
  • 解决:500 Internal Privoxy Error

    500 Internal Privoxy Error Privoxy encountered an error while processing your request Could not load template file no se
  • 内网穿透 VScodeSHH

    准备 腾讯云服务器 linux xshell xftp frp https github com fatedier frp 服务端为腾讯云服务器 linux 客户端为自己工作站 linux 服务端操作 用xshell登录腾讯云服务器 下载
  • audio标签与video标签的常用属性及方法

    一 常用的css属性 1 src 用于指明video标签需要播放的音频的地址
  • C语言学习之认识exit()函数

    C语言学习之认识exit 函数 在C语言的main函数中我们通常使用return 0 exit 0 表示程序正常退出 exit exit 1 表示程序异常退出 exit 结束当前进程 当前程序 在整个程序中 只要调用 exit 就结束 但在
  • unity下HybridCLR热更新简易框架

    简易打AB包工具 using System Collections using System Collections Generic using UnityEngine using UnityEditor using HybridCLR E
  • servlet的生命周期

    Servlet的生命周期可以分为5个阶段 加载阶段 创建阶段 初始化阶段 处理客户请求 服务 阶段 销毁阶段 1 加载阶段 服务器接收到客户端请求之后首先会通过类加载器使用servlet类对应的文件加载servlet 2 创建阶段 然后we
  • 河海大学计算机esi排名,河海大学材料科学学科进入ESI国际排名前1%

    根据汤森路透基本科学指标数据库 Essential Science Indicators 简称ESI 2018年3月最新公布的数据 河海大学材料科学学科继工程学 环境 生态学 计算机科学之后首次进入ESI国际学科排名全球前1 实现了学校学科
  • 面试算法题:O(nlogn)查询l~r区间内k的个数

    查询用户文章喜好 我们对用户按照它们的注册时间先后来标号 对于一类文章 每个用户都有不同的喜好值 我们会想知道某一段时间内注册的用户 标号相连的一批用户 中 有多少用户对这类文章喜好值为k 因为一些特殊的原因 不会出现一个查询的用户区间完全
  • 小程序/js/uni订单金额播放

    之前发现直接播放会自动中断 所以纠结了半天 先说思路 首先金额转成字符串 然后截取 得到两段数组 然后遍历 前段需要追加单位 后段小数点后 之后得到需要播放的音频数组 在每段播放完进行完后播放下一段 语音包有点问题就不放了 还是看代码吧 d