0

SoundJS を使用してサウンドを追加しようとしている既存の JavaScript ゲームがあります。私が抱えている問題は、プレーヤーが画面上で指を動かしたときに iPhone がウィンドウをドラッグできないようにするコード行が原因で、すべてのサウンドが再生されないことです。その 1 行 ("e.preventDefault();") をコメントアウトすると、サウンドは完全に機能しますが、ゲームはプレイできません。他の誰かがこれに遭遇しましたか?マウス座標を取得するための完全な関数は次のとおりです。

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;
  }
4

2 に答える 2

0

問題は解決された。

画面のドラッグを防ぐための少し別の方法を見つけました。これは、サウンドを妨げないようです。私のイベントハンドラ:

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」をコメントアウトし、「preventDefault」を処理するためだけに、リストの最後に「touchmove」の新しいイベント ハンドラーを追加しました。

これは単なる推測であり、なぜこのように機能し、他の方法では機能しないのか完全にはわかりません. しかし、それは確かに機能し、今ではサウンドと安定した画面の両方を持っています.

于 2014-05-10T16:43:33.877 に答える
0

ご質問ありがとうございます。私はこれまでこの動作を見たことがありません。SoundJS は mouse_move イベントに対して何もしないため、意味がありません。私の最善の推測は、preventDefault が何らかの形ですべてのイベントに適用されているということです。

この問題が実際に起こっていることを示す最小限のスパイクを一緒に投げることができれば、もう少し詳しく調べてみます.

それが役立つことを願っています。

于 2014-05-05T15:56:37.867 に答える