国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ASP.NET WEB服務和Flash打造MP3播放器

2019-11-18 19:14:51
字體:
來源:轉載
供稿:網友
  昨天裝了Flash MX 2004 PRo,看了下介紹,確實增加了不少新的特性,加了不少數據組件,后來感覺asp.net開發web服務這么簡單,于是突發奇想:我何不用c#和flash做一個播放器呀。下面介紹一下簡單的原理。

  用c#寫一個web服務,把一個指定目錄的.mp3文件都羅列出來(主要用System.IO里的一些成員),并添加到一個ArrayList里面,最后把這個ArrayList以Web服務的形式向外發布出去。然后用Flash MX 2004新建一個Flash文檔,用WebServiceConnector組件獲取剛剛發布的Web服務,然后把返回的結果綁定到Flash的List組件上,最后呢,在List組件上加一個行為,讓它雙擊的時候播放雙擊的mp3文件。

  一、 開發web服務

  具體代碼如下,很簡單,不再多說,web服務開發我們都很熟悉了,別說這么簡單的一個例子了。這里是在站點根目錄下新建一個mp3文件夾,然后往里面放一些MP3文件,最后可以預覽測試這個web服務,預覽的地址具體跟你建立的虛擬目錄路徑有關,我的如下。

http://onlytiancai/bak/flashmp3/mp3services.asmx


<%@ Webservice Language="C#" class="mp3Service" %>
using System;
using System.Collections;
using System.Web.Services;
using System.IO;

public class mp3Service : System.Web.Services.WebService
{
public mp3Service()
{
}

[WebMethod]
public ArrayList GetMp3()
{
ArrayList mp3List =new ArrayList();
string mp3path = Server.MapPath("mp3");
try
{
DirectoryInfo di = new DirectoryInfo(mp3path);
FileInfo[] fi = di.GetFiles();
foreach (FileInfo fiTemp in fi)
{
if(fiTemp.Extension.ToLower() == ".mp3"||fiTemp.Extension.ToLower() == ".wma")
{
mp3List.Add(fiTemp.Name);
}
}
}
catch (Exception e)
{
Console.WriteLine("The process failed: {0}", e.ToString());
}
return mp3List;
}
}

  二、 開發Flash客戶端

  打開Flash新建一個Flash文檔,然后按Ctrl+Shift+F10打開web服務面板,點擊左邊的添加web服務圖標,把第一步咱們開發的web服務地址添加上,如下。



  添加成功后,web服務面板如下圖。



  從組件面板了拖一個list組件放到場景中去,并在屬性面板里把它命名為mp3list,右鍵點擊mp3list組件,選擇【任意變形】,拖放到適當的大小。再拖放一個Button組件放在mp3list下面,取名叫submit,在組件檢查器里把submit按鈕的label屬性設置為“獲取音樂列表”。然后調整影片大小為250*400大小,最后效果如下。



  打開web服務面板,右鍵點擊GetMp3()方法,選擇添加方法調用,然后就會在場景里面自動添加一個web服務實例,選中它,在屬性里命名為mp3serivice。保持mp3serivice選中狀態,打開【組件檢查器】面板,切換到綁定標簽,點擊面板左上角的加號圖標,選中results:Array,點擊確定。然后選中綁定標簽里的results,雙擊下面的bound to,在【綁定到】對話框里選擇mp3list組件,點擊確定。最后如下圖



  選中submit按鈕,按Shift+F3按鈕,調出【行為面板】,點擊面板左上角的加號圖標,選擇【數據】=》【觸發數據源】,在彈出的【觸發數據源】對話框里選擇mp3serivice,點擊確定按鈕。



  這時候會自動在submit的動作面板里添加如下代碼。

on (click) {
// Trigger Data Source Behavior
// Macromedia 2003
this._parent.mp3serivice.trigger();
}

  選中mp3list組件,在行為面板里添加行為,依次選擇【聲音】=》【加載mp3流文件】,在彈出的對話框里的【輸入要加載的.mp3文件的URL】文本框里輸入http://onlytiancai/bak/flashmp3/mp3,然后下面的實例名稱里隨便輸入一個例子叫mp3,最后確定,如圖。



  保持mp3list選中,打開【動作面板】我們要稍微修改一下生成的代碼,把最后一句的_global.Behaviors.Sound.mp3.loadSound("http://onlytiancai/bak/flashmp3/mp3",true);修改成_global.Behaviors.Sound.mp3.loadSound("http://onlytiancai/bak/flashmp3/mp3/"+this.selectedItem,true);最后mp3list組件的動作代碼如下。

on (change) {
 //Load Streaming mp3 behavior
 if(_global.Behaviors == null)_global.Behaviors = {};
 if(_global.Behaviors.Sound == null)_global.Behaviors.Sound = {};
 if(typeof this.createEmptyMovieClip == ’undefined’){
  this._parent.createEmptyMovieClip(’BS_mp3’,new Date().getTime()-(Math.floor((new Date().getTime()) /10000)*10000) );
  _global.Behaviors.Sound.mp3 = new Sound(this._parent.BS_mp3);
 } else {
  this.createEmptyMovieClip(’_mp3_’,new Date().getTime()-(Math.floor((new Date().getTime()) /10000)*10000)  );
 _global.Behaviors.Sound.mp3 = new Sound(this.BS_mp3);
}
_global.Behaviors.Sound.mp3.loadSound("http://onlytiancai/bak/flashmp3/mp3/"+this.selectedItem,true);

}

  好了,Ctrl+Enter,測試一下你做的flash mp3播放器吧。怎么樣,測試成功的話Ctrl+Alt+Shift+S導出影片,這就成了。我在mp3目錄里放了幾首歌兒,測試了一下,雙擊歌曲的名稱就能播放歌曲了,以后把想要聽的歌兒放到那個目錄里就行了,如圖。



  改進:

  
這是一個簡單的演示,flash mx 2004里還有一些媒體播放控制的組件,如果配合這些組件改進一下這個播放器就可以控制mp3的音量,播放進度,還可以讓它支持更多的聲音格式等,還有一點兒就是,我們開發的web服務也很簡單,你可以擴展一下,增加一些搜索,收藏歌曲等功能,可以以次開發一個網站,用access做后臺數據庫,用戶注冊登陸后可以把收藏的歌曲放入到自己的私人數據庫,以后調出來就能聽了。還有就是你可以把音樂單獨弄成windows media server以流媒體的形式發布,這樣就可以讓你的應用程序有更強的性能和可伸縮性,因為你可以單獨在另一臺服務器上提供流媒體服務,對吧。

  小結:

  
其實我感覺ASP.NET是最高效的服務段技術,而flash是表現力最強的客戶端表現技術,我下載了Flash Remoting裝上了,一看是英文的我就不想測試了。利用它們的優點來開發出的應用程序在用戶體驗上有很大的改進,所以它們之間簡直就是絕配。雖然微軟的Smart Client技術也可以有效增強用戶體驗,但是以flash為代表的RIA技術表現也非常的不俗,至少可以和Ajax相媲美吧。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永川市| 东平县| 芦山县| 凉城县| 济源市| 巴里| 闻喜县| 平果县| 通海县| 宁强县| 翁源县| 托里县| 怀化市| 宜昌市| 印江| 梁河县| 从化市| 白水县| 政和县| 三穗县| 定襄县| 郴州市| 宁晋县| 荥阳市| 华容县| 贡嘎县| 丘北县| 漠河县| 宁阳县| 保德县| 壤塘县| 德钦县| 长汀县| 姚安县| 许昌市| 长垣县| 英吉沙县| 安仁县| 昭通市| 咸丰县| 普格县|