如何在SoundManager2中添加歌曲进度条?

时间:2013-08-16 12:34:32

标签: javascript jquery progress-bar audio-streaming

我正在尝试添加进度条以显示播放期间歌曲的位置。它只需要一个简单的解决方案。我在网上找到了一些代码,它使用SoundManager2 http://www.schillmania.com/projects/soundmanager2/功能调整div宽度以匹配歌曲的位置,但它似乎不起作用,不确定我哪里出错了,任何帮助都会受到赞赏。< / p>

我已经使用了所有必需的Soundmanager2文件和播放的歌曲。它只是进度条的问题。

这是javascript:

soundManager.setup({
url: '/swf',
preferFlash: false,
waitForWindowLoad: true,

onready: function() {

var myTrack1 = soundManager.createSound({
id: 'trackOne', url: 'msamples/beep-1.mp3', volume: 80, autoPlay: false,});
$(".progBar").css('width', ((this.position/this.duration) * 100) + '%');  

$("li.a5 a").click(function(event){soundManager.play('trackOne');});
},

ontimeout: function() {
  // Uh-oh. SWF missing, Flash blocked or other issue
}
});

HTML链接使用此格式,进度条位于下方:

<li class="a5">Song1:
<a href="msamples/beep-1.mp3" title="Play" class="sm2_button">Play</a>
<div id="track1"><div class="progBar"></div></div>
</li>

CSS是:

#track1 {
background-color: #333333;
height: 10px;
margin-top: 10px;
position: relative;
width: 100%;
}

.progBar {
background-color:#FFF;
height:10px;
}

想法是#track1充当进度条的容器,而.progBar是通过$(".progBar").css('width', ((this.position/this.duration) * 100) + '%');代码调整宽度的div。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

逻辑似乎很好 - 你需要的是在播放曲目时调用修改宽度片段,使用whileplaying方法(我认为):

soundManager.setup({
    url: '/swf',
    preferFlash: false,
    waitForWindowLoad: true,

    onready: function() {

        var myTrack1 = soundManager.createSound({
        id: 'trackOne', url: 'msamples/beep-1.mp3', volume: 80, autoPlay: false,});

        $("li.a5 a").click(function(event){soundManager.play('trackOne');});
    },

    whileplaying: function() {
      $(".progBar").css('width', ((this.position/this.duration) * 100) + '%');
    },

    ontimeout: function() {
      // Uh-oh. SWF missing, Flash blocked or other issue
    }
});

答案 1 :(得分:0)

通过在whileplaying:下添加soundManager.createSound让它发挥作用。我还添加了onfinish:,以便在最后将进度条重置为0宽度。

  soundManager.createSound({
    id: 'mySound1',
    url: 'msamples/beep-1.mp3',
    whileplaying: function() {
    $(".progBar").css('width', ((this.position/this.duration) * 100) + '%');
        },
    onfinish: function() {
        $(".progBar").css('width', '0');
        }
    });