2011-08-29 105 views
1

我正在開發一個在線聽音樂網站,我想根據用戶從gridview.right選擇播放歌曲,現在我正在使用Flash對象播放這個正在運行的MP3和視頻文件罰款,但其靜態path.how我可以動態傳遞所選歌曲的文件URL在Flash對象上。使用asp.net播放mp3歌曲

等待您的回覆。

+0

它必須是閃存?因爲有可用於asp.net的媒體播放器控件,可以適合您的需要 – UrbanEsc

回答

0

你好朋友,我已經得到了動態播放歌曲的答案。這是我的代碼。

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName.Equals("Play Now")) 
    { 
     int index = Convert.ToInt32(e.CommandArgument); 
     GridViewRow row = gridCalls.Rows[index]; 
     string songname = row.Cells[5].Text; // second column in the sql server database 
     StringBuilder str = new StringBuilder(); 
     str.Append("<object width='300px' height='300px'>"); 
     str.Append("<param name='autostart' value='true'>"); 
     str.Append("<param name='src' value='songs/" + songname + "'>"); 
     str.Append("<param name='autoplay' value='true'>"); 
     str.Append("<param name='controller' value='true'>"); 
     str.Append("<embed width='300px' height='300px' src='songs/" + songname + "' controller='true' autoplay='true' autostart='True' type='audio/wav' />"); 
     str.Append("</object>"); 

     LoadPlayer.Text = str.ToString();//here loadplayer is label control 
    } 
} 
2

使用Flash變量(需要重新加載頁面/ SWF)

最簡單的方法將是在URL傳遞作爲Flash變量,例如通過SWF文件中的對象/嵌入標籤查詢字符串:

MyPlayer.swf?url=/path/to/song.mp3 

/path/to/song.mp3當然可以通過一些服務器端邏輯打印。

在Flash中,你就可以使用root的LoaderInfo實例訪問這個變量的值:

var url : String = root.loaderInfo.parameters['url']; 

如果要提供時沒有指定Flash變量的默認,這是偉大的開發特別是,您可以通過使用||運算符來完成此操作。

var url : String = root.loaderInfo.parameters['url'] || 'default.mp3'; 

這將使用指定的URL,如果這種存在,否則退回到使用default.mp3。

使用ExternalInterface的&的Javascript

如果你不想重新載入頁面,使用ExternalInterface的,例如建立一個JavaScript接口您的Flash播放器像這樣:

if (ExternalInterface.available) { 
    ExternalInterface.addCallback('playUrl', playUrl); 
} 

function playUrl(url : String) : void { 
    // TODO: Add playback code here, e.g. using new Sound(url); 
} 

然後,從Javascript,你可以這樣做:

var swf = document.getElementById('idOfSwfEmbed'); 
swf.playUrl('http://example.com/path/to/song.mp3'); 

這將使用由ExternalInterface.addCallback()設立的JavaScript API調用的ActionScript方法playUrl()

我不知道.NET,因此您需要弄清楚如何在GridView中選擇歌曲時調用playUrl() javascript方法。

+0

flash對象頁面沒有區別,但此對象可用於gridvewi上的同一頁面上。 –

+0

@mayur:我不確定我瞭解你。你是說你不想重新加載頁面?如果是這種情況,那麼看看ExternalInterface。如果您正在重新加載頁面(或導航到單獨的頁面播放歌曲),那麼上述解決方案將正常工作。 – richardolsson

+0

richardolsson,我不想回發頁面,也不想要在另一頁導航 –

0

如果使用<object />標籤的* .swf文件添加到頁面:

添加下列標籤:

<object ...> 
    <param name="flashvars" value="path=<%# YOUR_PATH; %>"> 
</object> 

然後是SWF裏面:

var path:String = root.loaderInfo.parameters.path;