2009-08-12 56 views

回答

5

我假設客戶端不希望手動列出XML文件中的mp3文件,但無論如何,文件列表必須暴露給flash組件才能夠拉文件。

執行此操作的一種方法是服務器端腳本,該腳本將列出該給定目錄的文件並以某種XML格式(完全自動化,無需手動創建XML文件)返回此列表。編寫這樣的服務器端腳本應該相當簡單(例如使用PHP)。

過程:

  1. 抓取使用從客戶機到服務器側腳本的HTTP請求的文件的列表。
  2. 處理文件列表並做任何你想做的事情。
+2

如果有人在投票答案時留下一些評論,那該多好。 – 2009-08-12 23:13:22

1

我們在談論本地文件還是服務器文件? AIR還是SWF?如果您使用AIR,則可以使用文件對象在本地文件中執行此操作。

使用服務器上的swf內容,您可以使用php(或其他語言)腳本來執行此操作,該腳本可以獲取所有文件的名稱。在php中,看看readdir的方法。

不幸的是,在AIR之外的ActionScript中沒有本地方法。

希望有所幫助。 Tyler。

Tyler。

0

您可以使用文本文件而不是XML文件。

給定一個文本文件:

assets/song1.mp3 
assets/song2.mp3 
assets/song3.mp3 
assets/somg4.mp3 

該代碼將加載文本文件,並分割每個歌曲名稱到一個數組中的元素:

package 
{ 

import flash.display.Sprite; 
import flash.events.Event; 
import flash.net.URLLoader; 
import flash.net.URLRequest; 

public class LoadFileTest extends Sprite 
{ 
    public static const FILE_LIST_PATH:String = "mp3List.txt"; 

    public function LoadFileTest() 
    { 
     var urlRequest:URLRequest = new URLRequest(FILE_LIST_PATH); 
     var urlLoader:URLLoader = new URLLoader(); 

     urlLoader.addEventListener(Event.COMPLETE, processTextFile); 

     urlLoader.load(urlRequest); 
    } 

    public function processTextFile(event:Event):void 
    { 
     var loader:URLLoader = URLLoader(event.target); 
     var textFile:String = loader.data; 
     var mp3UrlList:Array = textFile.split("\n"); 

     trace(lines); 
    } 
} 

} 

另一個想法是使用共同的命名方案(例如,歌曲1,歌曲2,歌曲3等)並知道您在代碼中擁有多少首歌曲。這樣你就可以編寫一個簡單的循環(從1到歌曲的數量)並以這種方式加載它們。

相關問題