问题解决了。
我找到了一种稍微替代的方法来防止屏幕拖动,这似乎不会干扰声音。我的事件处理程序:
canvas_html.addEventListener ("mousedown", function() {mouse_down (false)}, false);
canvas_html.addEventListener ("mousemove", function() {mouse_move (false)}, false);
canvas_html.addEventListener ("touchstart", function() {mouse_down (true)}, false);
canvas_html.addEventListener ("touchmove", function() {mouse_move (true)}, true);
canvas_html.addEventListener ("touchend", function() {mouse_up (true)}, false);
document.body.addEventListener ("mouseup", function() {mouse_up (false)}, false);
document.body.addEventListener ("touchcancel", function() {mouse_up (true)}, false);
document.body.addEventListener ('touchmove', function (event) {event.preventDefault()}, false);
我在 mouse_move() 函数中注释掉了“preventDefault”,并在列表末尾为“touchmove”添加了一个新的事件处理程序,只是为了处理“preventDefault”。
这只是一个疯狂的猜测,我不完全确定为什么它以这种方式工作而不是另一种方式。但是,它确实有效,而且我现在既有声音又有稳定的屏幕。