(Web Audio Api基础信息整理中,到时候补上)
oscillator的意思是振荡器,众所周知,声音就是物体振动产生的声波。
在Web Audio Api中,官方给我们提供了一个振荡器 需要用createOscillator去初始。
当然光有一个振荡器也是不行的,我们需要一个介质将声音传送出去,在Web Audio Api中,我们有个觉destination的变量,他就是我们的“播放器”
使用oscillator.connect(context.destination);去连接。
相同的 我们也可以用oscillator.disconnetc();去解除连接关系
因为有振动,所以就有频率。
oscillator.frequency.value 就是这个音节频率的参数,单位是hz
好了 长话短说 上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style type="text/css">
.button {
margin-left: auto;margin-right: auto;width: 40%;height: 50px;background-color: aqua;border-radius: 5px;text-align: center;line-height: 50px;
}
</style>
</head>
<body>
<div οnclick="makeNoise()" class="button">点击发声</div>
<script type="application/javascript">
var AudioContext=AudioContext||webkitAudioContext,
context=new AudioContext,
canClick = true,
timeOut;
function makeNoise(){
if (canClick){
canClick = false;
var oscillator = context.createOscillator();
oscillator.connect(context.destination);
oscillator.frequency.value = 500;
oscillator.start(0);
setTimeout(function(){
oscillator.disconnect();
clearTimeout(timeOut);
canClick = true;
},1500)
}
}
</script>
</body>
</html>
注:我默认了浏览器支持AudioContext
效果就是播放500hz的声波1.5秒钟