客户希望能够将mp3文件放入文件夹并让flash对象加载该文件夹中的所有mp3文件,并且不想处理XML。这可能吗?我知道我可以轻松地使用XML文件执行此操作,但我不确定如何在没有XML文件的情况下执行此操作。
答案 0 :(得分:5)
我假设客户端不想手动列出XML文件中的mp3文件,但不管怎样,必须将文件列表暴露给flash组件才能拉出文件。
执行此操作的一种方法是服务器端脚本,该脚本将列出该给定目录的文件并以某种XML格式返回此列表(完全自动化,无需手动创建XML文件)。编写这样的服务器端脚本应该相当简单(例如,使用PHP)。
<强>过程:强>
答案 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到歌曲的数量)并以这种方式加载它们。