首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加event.preventDefault()杀死SoundJS

添加event.preventDefault()杀死SoundJS
EN

Stack Overflow用户
提问于 2014-05-03 23:35:34
回答 2查看 75关注 0票数 0

我有一个现有的javascript游戏,我试图添加声音使用SoundJS。我遇到的问题是,当播放器手指在屏幕上移动时,阻止iphone拖动窗口的代码行也会导致所有声音不播放。如果我注释掉这一行("e.preventDefault();"),声音会很好,但游戏是不可玩的。还有其他人碰到这个吗?以下是获取鼠标坐标的完整函数:

代码语言:javascript
复制
function mouse_move (finger, e)
  {
  if (!e) var e = event;
  if (finger == true) e.preventDefault();

  main_target_x = e.pageX - canvas_html.offsetLeft;
  main_target_y = e.pageY - canvas_html.offsetTop;
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-10 16:43:33

问题解决了。

我找到了一种略为替代的方法来防止屏幕拖动,这似乎不会干扰声音。我的事件处理程序:

代码语言:javascript
复制
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()函数中注释掉了“mouse_move”,并在列表的末尾添加了一个新的'touchmove‘事件处理程序,只是为了处理"preventDefault“。

这只是一个疯狂的猜测,我不完全确定为什么它是这样工作的,而不是相反的。它确实有效,然而,我现在既有声音又有稳定的屏幕。

票数 0
EN

Stack Overflow用户

发布于 2014-05-05 15:56:37

谢谢你的提问。我以前从未见过这种行为,因为SoundJS没有对mouse_move事件做任何事情,这实在是没有意义的。我最好的猜测是,preventDefault正以某种方式应用于所有事件。

如果你能组合一个最小的尖峰来证明这个问题在行动中,我将试着进一步研究它。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23450939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档