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

发布于 2024-10-19 19:12:29 字数 4346 浏览 6 评论 0原文

使用 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>

Using soundManager2, I made a simple anchor with onclick="mySound.play()", but there is a big gap (almost half a second) before the sound is actually heard! This is, even though I pre-loaded the sound. How can I get a better response-time?

Here is the source code:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

隔岸观火 2024-10-26 19:12:29

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

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

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

I don't see where the song gets preloaded. You want to set autoLoad to true in the default or createSound section (the defaults should be inherited by createSound).

In the default section it would be soundManager.autoLoad = true;

Or in the createSound method autoLoad:true, id: 'aSound', url: 'sounds/kick.mp3'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文