我正在开发一个在线听音乐网站,我想根据用户从gridview.right选择播放歌曲,现在我正在使用Flash对象播放这个正在运行的MP3和视频文件罚款,但其静态path.how我可以动态传递所选歌曲的文件URL在Flash对象上。使用asp.net播放mp3歌曲
等待您的回复。
我正在开发一个在线听音乐网站,我想根据用户从gridview.right选择播放歌曲,现在我正在使用Flash对象播放这个正在运行的MP3和视频文件罚款,但其静态path.how我可以动态传递所选歌曲的文件URL在Flash对象上。使用asp.net播放mp3歌曲
等待您的回复。
你好朋友,我已经得到了动态播放歌曲的答案。这是我的代码。
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
}
}
最简单的方法将是在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接口您的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方法。
flash对象页面没有区别,但此对象可用于gridvewi上的同一页面上。 –
@mayur:我不确定我了解你。你是说你不想重新加载页面?如果是这种情况,那么看看ExternalInterface。如果您正在重新加载页面(或导航到单独的页面播放歌曲),那么上述解决方案将正常工作。 – richardolsson
richardolsson,我不想回发页面,也不想要在另一页导航 –
如果使用<object />
标签的* .swf文件添加到页面:
添加下列标签:
<object ...>
<param name="flashvars" value="path=<%# YOUR_PATH; %>">
</object>
然后是SWF里面:
var path:String = root.loaderInfo.parameters.path;
它必须是闪存?因为有可用于asp.net的媒体播放器控件,可以适合您的需要 – UrbanEsc