クリックすると位置がランダムに変化する画像があります。
- 画像
- は50pxに離れた画像は50px以上離れた画像から
- から:私は、クリックがある場合に応じて三つの可能な異なる音のいずれかをプレイしたいです。
これを行うには、画像を移動するたびに画像の座標が更新されるように画像の座標を保存する必要があります。私はこのコードを持っています:
function move() {
var audio = document.getElementById("audio");
var img = document.getElementById("myImage");
//FIND CENTER OF IMAGE
var offset = $(img).offset();
var width = $(img).width();
var height = $(img).height();
// PLAY DIFFERENT SOUND
document.addEventListener("click", function(e) {
if (e.target === img) {
audio.src = "sound1.mp3";
audio.play();
} else if (e.clientX < (offset.left - 50) || e.clientX > (offset.left + width + 50) || e.clientY < (offset.top - 50) || e.clientY > (offset.top + height + 50)) {
audio.src = "sound2.mp3";
audio.play();
} else {
audio.src = "sound3.mp3";
audio.play();
}
// GENERATE RANDOM LOCATION
// Fix this part
var x = Math.floor(Math.random() * 400);
var y = Math.floor(Math.random() * 400);
img.style.top = x + "px";
img.style.left = y + "px";
img.style.bottom = x - "px";
img.style.right = y - "px";
}, false);
}
画像の座標を更新する際に、少し間違いがあります。なぜどんなアイデア?
?何か間違いはありますか?スクリプトはどのように動作しますか? – smarber
画像をクリックすると位置が変わります。画像上にクリックされたときにsound1が正しく再生されますが、プログラムは画像の位置を更新しないため、オフセット、幅、高さは常に対応します画像の最初の外観(中央)に表示されます。私は$()構文を悪用していると思います。 – Gigi
imgの高さ、幅、オフセットをキャッシュします。宣言と関数を移動して、これらのパラメータをクリックイベントハンドラに取得します。 – Oskar