let sound = plus.audio.createPlayer(utils.getFileUrl(msg.jsonData as string))  
      sound.setSessionCategory('ambient')  
      sound.addEventListener('ended', (result) => {  
        console.log('end play >>>>', msg.jsonData as string, result)  
        if (msg.userId !== currentMember.userId) {  
          data.memberList.forEach((member) => {  
            if (msg.userId === member.userId) {  
              member.speaking = false // 别人停止发言  
            }  
          })  
        }  
        sound = null  
      })  
      sound.addEventListener('play', (result) => {  
        console.log('start play >>>>', result)  
      })  
      sound.play()  
      console.log('start play >>>>', msg.jsonData as string)                                      - 发布:2024-11-22 14:05
 - 更新:2025-01-11 12:45
 - 阅读:234
 
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 11
HBuilderX类型: 正式
HBuilderX版本号: 4.28
手机系统: iOS
手机系统版本号: iOS 15
手机厂商: 苹果
手机机型: iphone6s
页面类型: vue
vue版本: vue3
打包方式: 离线
项目创建方式: HBuilderX
示例代码:
                                    
                                    
                                         
                                
                                                                                                操作步骤:
                                    
                                        使用plus.audio.createPlayer创建的多个播放音源,监听ended事件只有第一个执行。监听play事件会出现更多次调用,感觉添加监听这里很混乱。  
                                     
                                
                                                                                                使用plus.audio.createPlayer创建的多个播放音源,监听ended事件只有第一个执行。监听play事件会出现更多次调用,感觉添加监听这里很混乱。
预期结果:
                                    
                                    
                                        2个声音同时播放,监听的ended和play事件应该执行2次
                                     
                                
                                                                                                2个声音同时播放,监听的ended和play事件应该执行2次
实际结果:
                                    
                                    
                                        2个声音同时播放,监听的ended只执行了一次,play事件执行了3次
                                     
                                
                                                            2个声音同时播放,监听的ended只执行了一次,play事件执行了3次
bug描述:
使用plus.audio.createPlayer创建的多个播放音源,监听ended事件只有第一个执行。监听play事件会出现更多次调用,感觉添加监听这里很混乱。
plus.audio.createPlayer的addEventListener监听事件执行混乱,多个音源播放end play只执行一次(只执行第一个的监听)
预期结果:2个声音同时播放,监听的ended和play事件应该执行2次
实际结果:2个声音同时播放,监听的ended只执行了一次,play事件执行了3次
13:55:35.845 start play >>>>,  50000/2024/1122/67401caae4b016bcf0e15f0c.aac at pages/group/cyclingGroup.vue:511
13:55:35.845 start play >>>>,   at pages/group/cyclingGroup.vue:508
13:55:35.845 start play >>>>,   at pages/group/cyclingGroup.vue:508
13:55:39.915 start play >>>>,  50000/2024/1122/67401caee4b016bcf0e15f0d.aac at pages/group/cyclingGroup.vue:511
13:55:39.915 start play >>>>,   at pages/group/cyclingGroup.vue:508
13:55:41.963 end play >>>>,  50000/2024/1122/67401caee4b016bcf0e15f0d.aac,  {"keepCallback":false,"message":0,"status":1} at pages/group/cyclingGroup.vue:497  
主要问题:end play在同时播放音源时,希望音源播放多少就执行多少次
            
            
            
            
2 个回复
w***@163.com (作者)
BUG还是BUG,换了方案,采用定时监听播放器状态可以解决就是时效性不行
w***@163.com (作者)
什么时候能解决啊