JavaScriptプログラム

ゲーム効果音の再生方法

ボタンをクリックすると、「ピッ」となるプログラムを作ります。

効果音を探し、加工、プログラムへの組み込み、遅延のない再生と進みます。

  • 効果音を探す
  • 効果音の加工
  • 効果音をプログラムに組み込む
  • 効果音を遅延なく再生する

(注)効果音再生時の遅延

ボタンクリックから効果音再生までに時間が空くこと。

ゲームなどで、ボタンを連打する場合、この遅延が生じないようにする必要がある。

 

効果音を探す

グーグル検索で、フリーの効果音を探すと、サイトが沢山あります。

  • Google検索:キーワード「音 フリー素材 効果音」

 

その中で、「フリー効果音素材・無料効果音」というサイトから、フリー素材をダウンロードしました。

  • sh_pickup01.mp3

 

 

効果音の加工

効果音をプログラムに組み込むため、mp3ファイルをbase64文字列に変換します。

 

base64文字列

グーグル検索で、mp3 をbase64 に変換するサービスを提供しているサイトを探します。

  • Google検索:キーワード「mp3 base64 変換」

 

以下のサイトが見つかりました。
Code Contribution: MP3 to base64 encoder and decoder

このサイトの記事「MP3 to base64 encoder and decoder」中にあるツールを利用します。

 

このツールを利用することで、mp3効果音がbase64文字列になります。

  • sh_pickup01.mp3 → sh_pickup01.txt

 

sh_pickup01.txtは、1バイト文字が、9,712文字も並んでいます。

  • sh_pickup01.txt の内容: SUQzAwCAA ・・・・・ qqqqqg==

 

(注)sh_pickup01.txt のファイルサイズは、9.48(KB)です。

 

 

 

効果音をプログラムに組み込む

プログラム言語は、Javascript を用います。

 

base64文字列の設定

sh_pickup01.txtの中身であるbase64文字列を、変数「se64」に代入します。

代入演算子(=)の右辺に空文字(””)を作り、その中にsh_pickup01.txtの中身を「コピー&ペースト」します。

  • var se64 = ”SUQzAwCAA ・・・・・ qqqqqg==”;

 

(注)実際は、9,712文字あるので、とても長い文字列です。

 

プログラム(全体)
<!DOCTYPE html>
<html>
    <head>
        <meta  http-equiv="Content-Type"  content="text/html; charset=UYF-8" />
        <title>Sound Effect</title>
        <script>
        //
        //
        //
            var  se64  =  ”SUQzAwCAA ・・・・・ qqqqqg==”;
        //
        //
        //
            var  se  =  new  Audio("data:audio/wav;base64," + se64);
        </script>
    </head>
    <body>
        <input  type="button"  value="効果音"  onclick="se.currentTime=0; se.play()">
    </body>
</html>

 

プログラムの説明

10行目において、変数「se64」にbase64文字列を代入しています。

14行目では、その「se64」を用いて、Audioオブジェクトを生成しています。

18行目で、inputタグでボタンを定義しています。

inputタグのonclick属性に、ボタンをクリックしたときに動くプログラムを記述します。

ここでは、効果音を再生するため、se.play() と記述します。

 

効果音を遅延なく再生する

18行目のinputタグのonclick属性に以下のコマンドがあります。

  • se.currentTime = 0;

 

AudioオブジェクトのcurrentTimeプロパティをゼロ(0)にしています。

ボタンをクリックする度に、currentTimeプロパティがゼロ(0)になります。

ボタンをクリックする度に、効果音が初期位置に巻き戻しされます。

 

これにより、ボタンを連打したときに効果音の遅延がなくなります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です