news 2026/10/17 6:46:19

案例 2.2 图片与声音开发实践博客

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
案例 2.2 图片与声音开发实践博客

前言

本次完成微信小程序《案例 2.2 图片与声音》开发,实现图片点击控制音频播放暂停基础功能,并按照作业要求扩展播放速率、控制台打印播放信息,记录完整开发过程、代码与踩坑要点。

一、项目功能说明

  1. 页面加载完成后,展示宝塔山图片,点击图片切换音频播放 / 暂停。
  2. 基础功能:点击图片播放,再次点击暂停音频。
  3. 功能扩展 1:设置音频播放速度为 0.5 倍慢速(playbackRate 属性)。
  4. 功能扩展 2:音频播放过程中,控制台实时打印当前音频播放位置、播放速率;每次点击播放 / 暂停时同步打印信息。
  5. 页面样式:使用全局 app.wxss 样式,粉色边框容器,红色加粗标题,图片自适应宽度。

二、页面文件结构

pages └── index ├─ index.wxml 页面结构 ├─ index.js 业务逻辑(音频控制) ├─ index.wxss 页面局部样式 └─ index.json 页面配置 app.wxss 全局公共样式

三、完整代码展示

1. index.wxml

<!--index.wxml--> <navigation-bar title="图片与声音" back="{{false}}" color="black" background="#FFF"></navigation-bar> <view class="box container"> <view class="title">宝塔山</view> <image src="{{imgSrc}}" mode="widthFix" bind:tap="sing" /> </view>

2. index.js

// index.js let innerAudioContext; let start = false; Page({ data: { imgSrc: 'https://636c-cloud1-d4g4p0fp362f474fd-1505398098.tcb.qcloud.la/images/yanan.webp?sign=edc21c073ffe11bc36e964aac8d13519&t=1791868474' }, onLoad() { innerAudioContext = wx.createInnerAudioContext() innerAudioContext.src = 'https://636c-cloud1-d4g4p0fp362f474fd-1505398098.tcb.qcloud.la/audios/huiyanan.mp3?sign=553ec07f4d00e3259b2404521357dea3&t=1791868494' // 扩展1:设置播放速度0.5倍慢速 innerAudioContext.playbackRate = 0.5; // 实时监听音频时间更新,持续打印播放信息 innerAudioContext.onTimeUpdate(() => { console.log("当前音频的播放位置:", innerAudioContext.currentTime) console.log("当前音频播放速率:", innerAudioContext.playbackRate) }) }, sing() { start = !start // 布尔取反,每次点击翻转状态:true ↔ false if (start == true) { innerAudioContext.play() } else { innerAudioContext.pause() } // 点击播放/暂停时打印一次信息 console.log("当前音频的播放位置:", innerAudioContext.currentTime) console.log("当前音频播放速率:", innerAudioContext.playbackRate) } })

3. index.wxss

/**index.wxss**/ page { height: 100vh; display: flex; flex-direction: column; } image{ width:100%; }

4. app.wxss(全局样式)

/**app.wxss**/ .container { display: flex; flex-direction: column; align-items: center; box-sizing: border-box; } .box { margin: 20rpx; padding: 20rpx; border: 2rpx solid pink; } .title { font-size: larger; font-weight: bolder; text-align: center; margin-bottom: 30rpx; color: red; }

四、核心知识点说明

  1. InnerAudioContext 音频对象:微信小程序音频 API,用于本地 / 网络音频播放控制。
  2. playbackRate属性:控制音频播放速率,0.5 代表慢速播放,范围 0.5~2。
  3. onTimeUpdate监听事件:音频播放时间发生变化自动触发,用来实时获取播放位置currentTime。
  4. 状态标记变量start:布尔变量,用来记录音频播放状态,点击图片切换 true/false,实现播放暂停切换。
  5. 全局样式 app.wxss:定义通用 class,全部页面可以直接复用样式,减少重复代码。

五、踩坑要点

  1. 域名校验:使用云开发静态资源链接,开发工具需要勾选【不校验合法域名】,否则图片、音频加载失败。
  2. 状态不同步问题:音频播放结束后,start变量不会自动重置,下次点击状态会错乱,可以增加onEnded监听重置 start。
  3. 控制台日志:onTimeUpdate会高频打印,控制台信息刷新很快,属于正常现象,和作业示例截图效果一致。
  4. 样式优先级:app.wxss 全局样式,页面 index.wxss 局部样式,局部样式会覆盖全局同名样式,注意不要冲突。

六、运行效果

  1. 进入页面,页面展示粉色边框容器,红色加粗 “宝塔山” 标题,下方显示图片。
  2. 点击图片:音频 0.5 倍慢速开始播放,控制台不断输出当前播放位置、播放速率。
  3. 再次点击图片:音频暂停,控制台打印暂停瞬间的播放位置与速率。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 6:45:18

电器元件-荧光灯(日光灯)

简介荧光灯就是咱们以前常说的日光灯&#xff0c;属于气体放电灯。 灯管里面抽走空气&#xff0c;充少量氩气水银&#xff0c;管壁涂一层荧光粉。原理简单说&#xff1a; 通电后&#xff0c;灯管里的水银会产生看不见的紫外线&#xff1b;紫外线打在管壁荧光粉上&#xff0c;紫…

作者头像 李华
网站建设 2026/10/17 6:44:57

机器学习之模型评估

模型评估理论基础&#xff1a; 欠拟合 (Underfitting)&#xff1a;模型过于简单&#xff0c;无法捕捉数据真实规律&#xff08;类比&#xff1a;学生没理解核心概念&#xff09;。 特征&#xff1a;训练误差和测试误差都高&#xff1b;模型复杂度不足&#xff1b;特征工程不充分…

作者头像 李华
网站建设 2026/10/17 6:44:47

用Python给自家WiFi做安全体检:从握手包抓取到弱密码检测

前两天有位读者在后台问我&#xff1a;用Python到底能不能把隔壁WiFi的密码跑出来&#xff1f;我盯着这条消息看了半天&#xff0c;第一个念头不是技术行不行&#xff0c;而是这事绝对不能碰。但转念一想&#xff0c;这个方向本身确实有巨大价值——只不过要把它放在合规的框架…

作者头像 李华
网站建设 2026/10/17 6:44:05

一根线的显相:人体拓扑论

—— 关于人体拓扑生长原理及未来仿生体路径的假说 本文为作者&#xff08;道影子&#xff09;基于内观体悟所提出的一个思想假说&#xff0c;非实证科学结论。文中涉及 "维性力网"" 人体拓扑 " 等概念&#xff0c;均为本体系内的自洽设定&#xff0c;供同…

作者头像 李华
网站建设 2026/10/17 6:44:04

内测分发折腾史:从微信传包到海哈游分发

做独立开发这几年&#xff0c;写代码的时间其实只占一半&#xff0c;另一半全耗在了“把包送到测试同学手里”这件事上。今天想聊聊内测分发这个看似不起眼、实则极其磨人的环节&#xff0c;以及我最终怎么用 海哈游分发 把这事儿理顺的。一、那些年我发内测包踩过的坑最开始&a…

作者头像 李华