2011-08-29 138 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;