如何使用soundManager2获得更好的响应时间?

时间:2011-03-03 05:54:27

标签: performance soundmanager2

使用soundManager2,我用onclick =“mySound.play()”创建了一个简单的锚点,但是在实际听到声音之前有一个很大的差距(差不多半秒)!这是,即使我预先加载了声音。如何才能获得更好的响应时间?

以下是源代码:

<!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>

1 个答案:

答案 0 :(得分:1)

我看不到这首歌被预加载的位置。您希望在默认或createSound部分中将autoLoad设置为true(默认值应由createSound继承)。

在默认部分中,它将是soundManager.autoLoad = true;

或者在createSound方法autoLoad:true, id: 'aSound', url: 'sounds/kick.mp3'