1

特定のキーが押されたときにサウンドを再生するために switch() を使用していますが、キーを離したときにサウンドループを停止してリセットしたいと考えています。これが私のコードです:

$(function() {
   $(document).on("keydown", function(key) {
        switch(parseInt(key.which, 10)) {
            case 65:
                $("#sound").get(0).play();
                break;

            case 83:
                $("#sound2").get(0).play();
                break;

            case 68:
                $("#sound3").get(0).play();
                break;

            case 70:
                $("#sound4").get(0).play();
                break;

        };
   }).on("keyup", function() {
      $(this).pause();
      $(this).currentTime=0;
  });
});

私の問題は、keyup ハンドラー内で $(this) を使用することにあると思いますが、最終的には多くのサウンド ID を使用するため、各サウンド ID を変数として指定したくありません。これを簡単に行う方法はありますか?

助けてくれてありがとう!

4

1 に答える 1

1

thiskeyup ハンドラー内でドキュメント オブジェクトを参照する場合、現在再生中のサウンド要素への参照を維持することができます。

$(function() {
    var playing;
    $(document).on("keydown", function(key) {
        playing = undefined;
        switch(parseInt(key.which, 10)) {
            case 65:
                playing = $("#sound").get(0);
                break;

            case 83:
                playing = $("#sound2").get(0);
                break;

            case 68:
                playing = $("#sound3").get(0);
                break;

            case 70:
                playing = $("#sound4").get(0);
                break;

        };
        if(playing){
            playing.play();
        }
    }).on("keyup", function() {
        if(playing){
            playing.pause();
            playing.currentTime=0;
            playing = undefined;
        }
    });
});
于 2013-10-18T02:47:02.317 に答える