是否可以在不使用AS3中的XML的情况下从文件夹加载所有文件?

时间:2009-08-12 16:10:03

标签: flash actionscript-3

客户希望能够将mp3文件放入文件夹并让flash对象加载该文件夹中的所有mp3文件,并且不想处理XML。这可能吗?我知道我可以轻松地使用XML文件执行此操作,但我不确定如何在没有XML文件的情况下执行此操作。

3 个答案:

答案 0 :(得分:5)

我假设客户端不想手动列出XML文件中的mp3文件,但不管怎样,必须将文件列表暴露给flash组件才能拉出文件。

执行此操作的一种方法是服务器端脚本,该脚本将列出该给定目录的文件并以某种XML格式返回此列表(完全自动化,无需手动创建XML文件)。编写这样的服务器端脚本应该相当简单(例如,使用PHP)。

<强>过程:

  1. 使用从客户端到服务器端脚本的HTTP请求获取文件列表。
  2. 处理文件列表并执行您打算用它们做的任何事情。

答案 1 :(得分:1)

我们在谈论本地文件或服务器文件吗? AIR还是SWF?如果您使用的是AIR,则可以使用 File 对象对本地文件执行此操作。

使用服务器上的swf内容,您可以使用可以获取所有文件名称的php(或其他语言)脚本来执行此操作。在php中,看一下 readdir 方法。

不幸的是,AIR之外的ActionScript中没有本机方法。

希望有所帮助。

泰勒。

答案 2 :(得分: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);
    }
}

}

另一个想法是使用通用的命名方案(例如song1,song2,song3等)并知道你在代码中有多少首歌曲。这样你就可以编写一个简单的循环(从1到歌曲的数量)并以这种方式加载它们。