0

我一直在为我的网站创建一个弹出式播放器,用户可以在其中播放其他用户上传到网站的音乐播放列表。但是目前我不得不手动单击每首曲目来播放它,我想知道是否有人设法创建了一个<cfmediaplayer>自动播放播放列表中的下一首歌曲。它知道当前播放哪首歌的方式是在 url 变量中定义的,该变量发送用户点击的曲目名称,然后调用数据库以查看是否可以找到匹配项,然后我使用源输出位置我存储的曲目。生病发布代码以更清楚地了解我在做什么:

<cfquery datasource="#mydatabase#" name="getsongs">
    Select *
    From artists, songs
    Where artist_id = song_artistid
</cfquery>

<cfif IsDefined("URL.song")>
    <cfquery datasource="#mydatabase#" name="playsong">
        Select *
        From songs
        Where artist_id = song_artistid
        And song_name = '#URL.song#'
    </cfquery>
</cfif>

<div style="margin: 0 auto; width: 800px;>
    <div style="width: 300px; float: left; overflow: scroll;">
        <cfoutput query="getartists">
            <a href="popup_player.cfm?song=#song_name#>#artist_name# - #song_name#</a>
        </cfoutput>
    </div>

    <cfif IsDefined("URL.song")>
        <div style="width: 500px; float: right;">
            <cfoutput>
                <cfmediaplayer name="song" source="artists/songs/#playsong.song_location#" autoplay="yes" height="500" width="500"></cfmediaplayer>
            </cfoutput>
        </div>
    </cfif>
</div>

如您所见,我有一个滚动 div,其中列出了用户播放列表中的所有歌曲。通过单击歌曲,它会更新在媒体播放器中播放的曲目。我想知道是否有任何方法可以在歌曲完成后自动单击下一个链接,并且也许有一种方法,如果一个变量已设置为在到达最后一首曲目时重复播放列表,它会再次回到第一个。

4

3 回答 3

1

请参阅 CFMEDIAPLAYER 的参考指南 ( http://help.adobe.com/en_US/ColdFusion/10.0/CFMLRef/WSE66DB0CD-E16D-49e7-AAEE-F51F9580554E.html )。它支持在轨道结束时运行 JavaScript。您可以使用它来自动调用下一首曲目。

于 2013-04-12T11:42:40.040 回答
0

好的,我以前从未使用过 cfmediaplayer,但是这个伪代码应该可以让你到达你需要的地方。

这些是我使用的资源。

  1. 在 ColdFusion 中使用 JavaScript 和 CFMEDIAPLAYER 标签动态启动和停止视频
  2. ColdFusion.Mediaplayer.setSource
  3. 媒体播放器

<cfquery ...>
Select
   songUrl
from
   songs
</cfquery>
<!--- build your coldFusion array of song URLs --->
<cfset urlList = valueList(query.songURL)>
<cfset urlArray = listToArray(urlList)>

<script>
    <cfoutput>
    #toScript(urlArray)#
    var songIndex = #query.currentRow-1#; <!--- or url.currentRow, whatever you're using --->
    </cfoutput>
    startNext(){
        songIndex++;
        if(songIndex <= urlArray.length){                
            ColdFusion.Mediaplayer.setSource('mediaPlayerName', urlArray[songIndex]);
            ColdFusion.Mediaplayer.startPlay('mediaPlayerName');
        }
    }
</script>

于 2013-04-12T15:05:48.343 回答
0

您可以在歌曲结束时运行 javascript。添加到您当前的代码:

 <cfmediaplayer onComplete=" YOUR_PLAY_NEXT_FUNCTION"  name="song"
 source="artists/songs/#playsong.song_location#" autoplay="yes"
 height="500" width="500"></cfmediaplayer>

从评论中添加

我没试过,但这对你有用吗?

var i = 0; // This should be the current song_no 
$("#button").on('click', function(){ 
    // Adds +1 to the current song number
    i++  
    // Create a variable using the standard url + the added song-number
    var curr_song = "artists/songs/#playsong.song_location#"+i;  
    // Changes the attribute to the new song-url 
    $('cfmediaplayer').attr("name",curr_song); 
});
于 2013-04-12T11:52:11.090 回答