wx.createInnerAudioContext多个音频播放

想做一个页面里多种小鸟,点不同的鸟播放不同的声音。一般都是用audio,但小程序文档提示:音频。1.6.0版本开始,该组件不再维护。建议使用能力更强的 wx.createInnerAudioContext 接口。

InnerAudioContext | 微信开放文档

结果发现这文档写的真好啊,如同没写一般。

废话不多说,上代码。

<view class="" bindtap="playSound" data-sound="{{item.sound}}">2播放</view>

循环出来的按钮,只是测试所以没用图片按钮。

注意:大坑1,OnLoad里注册一次就够,很多文章都写播放事件里了。

           大坑2,地址必须是网络的,本地的audio好使,但这个不好使,我准备用七牛云。 


js里先按文档声明    const audio2 = wx.createInnerAudioContext();    

 点击的时候换个src就行了,正在播放的声音自动就停了。控制指令老样子,播放play(),暂停pause(),停止stop()。其他的有需要的自己开发吧,短音频只需要play()就够了。

onLoad: function (options) {
        audio2.onPlay(() => {
            console.log("开始播放");
        })
        audio2.onStop(() => {
            console.log("播放结束");
        })
        // audio2.onWaiting(() => {
        //     console.log("缓冲中");
        // })
        // audio2.onEnded(() => {
        //     console.log("播放完毕");
        // })
        // audio2.onError((res) => {
        //     console.log("网络出错,请稍后再试");
        // })
},
playSound(e){
        let sound = e.currentTarget.dataset.sound;
        audio2.src = sound;
        audio2.play();
},

分享使我进步,让我快乐

### 微信小程序实现音频播放列表功能 #### 功能概述 为了增强用户体验,在微信小程序中创建一个完整的音频播放器,支持多个音频文件按顺序或随机播放是非常重要的。这不仅限于单个音频文件的播放控制,还包括构建一个可以管理多首歌曲的播放列表。 #### API 使用说明 利用 `wx.createInnerAudioContext` 方法来创建内部音频上下文对象[^1]。此方法返回的对象提供了丰富的接口用于加载、播放、暂停以及监听各种事件如结束、错误等。对于播放列表而言,主要关注的是如何切换不同的音轨并保持良好的用户体验。 ```javascript const innerAudioContext = wx.createInnerAudioContext(); innerAudioContext.src = 'your_audio_url_here'; innerAudioContext.play(); ``` #### 数据结构设计 定义一个数组存储所有的音频项信息,每条记录至少应包含 URL 和标题两个属性: ```json [ {"title": "Song Title 1", "url": "/path/to/audiofile1.mp3"}, {"title": "Song Title 2", "url": "/path/to/audiofile2.mp3"} ] ``` #### 页面逻辑处理 当用户点击某一首歌时更新当前播放索引,并调用相应的方法设置新的源路径再开始播放: ```javascript Page({ data: { playlist: [ { title: 'Track One', url: '/audio/track_one.mp3' }, { title: 'Track Two', url: '/audio/track_two.mp3' } ], currentIndex: null, isPlaying: false }, onLoad(options){ this.innerAudioCtx = wx.createInnerAudioContext(); // 创建音频实例 }, playMusic(index){ const track = this.data.playlist[index]; if (!this.data.isPlaying || this.data.currentIndex !== index) { this.setData({currentIndex:index,isPlaying:true}); this.innerAudioCtx.src = track.url; this.innerAudioCtx.play(); this.innerAudioCtx.onEnded(() => { let nextIndex = (index + 1) % this.data.playlist.length; this.playMusic(nextIndex); }); } else { this.pauseMusic(); } }, pauseMusic(){ this.innerAudioCtx.pause(); this.setData({isPlaying:false}); } }) ``` 上述代码片段展示了基本的操作流程,包括初始化页面数据、响应用户的播放请求、自动跳转至下一曲目等功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值