0

soundManager2 を使って、onclick="mySound.play()" で簡単なアンカーを作成しましたが、実際に音が聞こえるまでに大きなギャップ (約 0.5 秒) があります。これは、サウンドをプリロードしたにもかかわらずです。応答時間を短縮するにはどうすればよいですか?

ソースコードは次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" >
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <meta name="author" content="Shawn Inder" />
        <title>jeuReno</title>
        <style type="text/css">
        <!--



        -->
        </style>

        <!-- include SM2 library -->
        <script type="text/javascript" src="soundManager/script/soundmanager2.js"></script>

        <!-- configure it for your use -->
        <script type="text/javascript">

            soundManager.url = 'soundManager/swf/'; // directory where SM2 .SWFs live

            // Note that SoundManager will determine and append the appropriate .SWF file to the URL,
            // eg. /path/to/sm2-flash-movies/soundmanager2.swf automatically.

            // Beta-ish HTML5 audio support (force-enabled for iPad), flash-free sound for Safari + Chrome. Enable if you want to try it!
            // soundManager.useHTML5Audio = true;

            // do this to skip flash block handling for now. See the flashblock demo when you want to start getting fancy.
            soundManager.useFlashBlock = false;

            // disable debug mode after development/testing..
            // soundManager.debugMode = false;

            // Option 1: Simple onload() + createSound() method

            /*soundManager.onload = function() {
              // SM2 has loaded - now you can create and play sounds!
              soundManager.createSound('helloWorld','sounds/crash.mp3');
              soundManager.play('helloWorld');
            };*/

            // Option 2 (better): More flexible onload() + createSound() method

            /*soundManager.onload = function() {

              var mySound = soundManager.createSound({
                id: 'aSound',
                url: 'sounds/kick.mp3'
                // onload: [ event handler function object ],
                // other options here..
              });

              mySound.play();

            }*/

            // Option 3 (best): onready() + createSound() / ontimeout() methods for success/failure:

            /*soundManager.onready(function() {

              // SM2 has loaded - now you can create and play sounds!
              var mySound = soundManager.createSound({
                id: 'aSound',
                url: 'sounds/snare.mp3'
                // onload: [ event handler function object ],
                // other options here..
              });
              mySound.play();

            });*/

            soundManager.useHighPerformance = true;

            soundManager.ontimeout(function() {

              // (Optional) Hrmm, SM2 could not start. Show an error, etc.?
              alert("wtf");

            });
        </script>

        <script type="text/javascript">
            /*var snare = soundManager.createSound({
                id: 'snare',
                url: 'sounds/snare.mp3'
            });
            var kick = soundManager.createSound({
                id: 'kick',
                url: 'sounds/kick.mp3'
            });
            var crash = soundManager.createSound({
                id: 'crash',
                url: 'sounds/crash.mp3'
            });
            var highHat = soundManager.createSound({
                id: 'highHat',
                url: 'sounds/highHat.mp3'
            });*/
            soundManager.onready(function() {

              // SM2 has loaded - now you can create and play sounds!
              mySound = soundManager.createSound({
                id: 'aSound',
                url: 'sounds/snare.mp3'
                // onload: [ event handler function object ],
                // other options here..
              });
              mySound.load();
              // mySound.play();

            });

        </script>
    </head>
    <body>

        <a href="#" onclick="void(mySound.play());">click</a>

    </body>
</html>
4

1 に答える 1

1

曲がプリロードされる場所がわかりません。デフォルトまたは createSound セクションで true に設定autoLoadする必要があります (デフォルトは createSound によって継承される必要があります)。

デフォルトのセクションでは、soundManager.autoLoad = true;

または createSound メソッドでautoLoad:true, id: 'aSound', url: 'sounds/kick.mp3'

于 2011-03-03T06:22:29.537 に答える