【发布时间】:2017-06-12 07:24:31
【问题描述】:
我一直在尝试让振荡器在 IOS 上的移动浏览器中播放(在 Chrome 或 Safari 中不起作用),但我正在苦苦挣扎。根据我所做的研究,我发现您必须在触摸事件上创建振荡器(甚至可能是上下文)。我在桌面上工作的是一个振荡器,它连接到增益节点并在跨度元素上的 mouseenter 事件上播放声音。然后在 mouseout 事件中,它会断开与 gain 节点的连接,以便在下一个 mouseenter 事件时再次连接,从而能够在每次将角色悬停在其上时创建新的声音。
$(".hover-letters span").on("touchend mouseenter", function(){
audioVariables($(this));
});
$(".hover-letters span").on("touchstart mouseout", function(){
oscillator.disconnect(gainNode);
});
function audioVariables(element){
resizeWindowWidth = parseInt($(window).width());
frequency = mouseX/(resizeWindowWidth/600);
type = element.parent().data("type");
sound();
}
var firstLetterInteraction = true;
function sound() {
if (firstLetterInteraction === true){
audioCtx = new(window.AudioContext || window.webkitAudioContext)();
oscillator = audioCtx.createOscillator();
gainNode = audioCtx.createGain();
oscillator.start();
}
oscillator.connect(gainNode);
gainNode.connect(audioCtx.destination);
oscillator.frequency.value = frequency;
oscillator.type = type;
firstLetterInteraction = false;
};
由于某种原因,声音无法在 IOS 上播放,也没有显示任何错误。我开始怀疑这是否可能作为 CaptureWiz 示例之类的示例:
How do I make Javascript beep?
Web Audio API 网站上给出的示例:http://webaudioapi.com/samples/oscillator/ 在移动设备上不适合我。有人有什么想法吗?
【问题讨论】:
-
您能否编辑您的问题以向我们展示您迄今为止已经尝试过的内容,以便我们可以帮助调整代码?
-
问题已编辑以显示我到目前为止所做的尝试
标签: javascript ios mobile-safari web-audio-api