代码之家  ›  专栏  ›  技术社区  ›  Matt

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

  •  2
  • Matt  · 技术社区  · 15 年前

    客户机希望能够将MP3文件放在文件夹中,并让Flash对象从该文件夹中加载所有MP3文件,而不希望处理XML。这有可能吗?我知道使用XML文件可以很容易地做到这一点,但是我不知道如果没有XML文件如何做到这一点。

    3 回复  |  直到 15 年前
        1
  •  5
  •   Lior Cohen    15 年前

    我假设客户机不想手动以XML文件的形式列出MP3文件,但是无论如何,必须将文件列表公开给flash组件,以便它能够提取文件。

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

    过程:

    1. 使用HTTP请求从客户端获取文件列表到服务器端脚本。
    2. 处理文件列表,并按您的意愿处理它们。
        2
  •  1
  •   Tyler Egeto    15 年前

    我们说的是本地文件还是服务器文件?空气还是SWF?如果您使用的是air,您可以使用本地文件执行此操作,使用 文件 对象。

    使用服务器上的SWF内容,您可以使用可以获取所有文件名的PHP(或其他语言)脚本来完成此操作。在PHP中,查看 雷迪尔 方法。

    不幸的是,在空中行动脚本中没有本地方法。

    希望有帮助。

    泰勒。

        3
  •  0
  •   James Fassett    15 年前

    您可以使用文本文件而不是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到歌曲的数目),并以这种方式加载它们。