javascript - 音量超出范围
问题描述
我的控制台日志抛出以下错误:
未捕获的 DOMException:无法在 'HTMLMediaElement' 上设置 'volume' 属性:提供的音量 (1.005) 超出范围 [0, 1]。
谁能向我解释如何解决这个问题?任何帮助表示赞赏!谢谢你。
代码:
// Fade out/in functions for music player
function audio_fade_out(){
var timer,
myAudio = document.getElementById("musicPlayer");
if (myAudio.volume > 0) {
myAudio.volume -= 0.003;
timer = setTimeout(audio_fade_out,0);
console.log(myAudio.volume);
}
}
function audio_fade_in(){
var timer,
myAudio = document.getElementById("musicPlayer");
if (myAudio.volume < $audio_volume) {
myAudio.volume += 0.005;
timer = setTimeout(audio_fade_in,10);
console.log(myAudio.volume);
}
}
解决方案
对于audio_fade_out()
,有可能低于0
。如果myAudio.volume
是0.001
,这通过了 的测试> 0
,但您仍然0.003
从中减去。
在audio_fade_in()
,谁知道,因为你没有向我们展示任何东西$audio_volume
。
按照您的方法,您要做的是将音量设置Math.max(myAudioVolume - 0.003, 0)
为钳制任何值等于或高于0
. audio_fade_in()
在...上做相反的事情Math.min(myAudioVolume + 0.005, 1)
。
但是,您真正应该做的是使用 Web Audio APIgain
并将GainNode
. 这听起来会更流畅。
https://developer.mozilla.org/en-US/docs/Web/API/AudioParam/exponentialRampToValueAtTime
推荐阅读
- node.js - 模型和关联如何与外键相关?
- sql - 在递增值时选择和更新表中的行
- google-cloud-platform - 将 TPU 与 PyTorch 一起使用
- scala - Gradle 错误:路径为“无法在根项目”中找到的项目
- javascript - Here Maps api:如何在地图上显示当前中心(JavaScript)
- spring-boot - 如何从授权码 OAuth2 中获取电子邮件地址
- javascript - 如何正确“toDate()”Firestore 时间戳的大型文档?
- git - Azure DevOps - 组合项目的克隆命令是什么?
- c++ - 在运行时为动态分配的内存输入值
- mysql - 将日期拆分为多列