Flash 是否可以嵌入文件夹中的所有文件?
我想嵌入给定文件夹的所有xml文件。现在我正在做这样的事情:Flash 是否可以嵌入文件夹中的所有文件?,flash,apache-flex,actionscript-3,embed,flash-builder,Flash,Apache Flex,Actionscript 3,Embed,Flash Builder,我想嵌入给定文件夹的所有xml文件。现在我正在做这样的事情: [Embed(source="../somefolder/file1.xml", mimeType="application/octet-stream")] private var MyClass1:Class; [Embed(source="../somefolder/file2.xml", mimeType="application/octet-stream")] private var MyClass2:Class; [Em
[Embed(source="../somefolder/file1.xml", mimeType="application/octet-stream")]
private var MyClass1:Class;
[Embed(source="../somefolder/file2.xml", mimeType="application/octet-stream")]
private var MyClass2:Class;
[Embed(source="../somefolder/file3.xml", mimeType="application/octet-stream")]
private var MyClass3:Class;
及
XML文件列表将增加到10多个文件,因此我正在寻找一种更优雅、更动态的方式来嵌入这些文件
这些文件应该在编译时嵌入,通过URLLoader加载它们不是一个选项
有什么想法吗?我不认为有什么方法可以做到:
[Embed(source="../somefolder/*", mimeType="application/octet-stream")]
但是你可以使用Zip文件访问他的内容。我经常做这样的事情:
package
{
import flash.display.Sprite;
import flash.utils.ByteArray;
import nochump.util.zip.ZipEntry;
import nochump.util.zip.ZipFile;
public class TestTextfield extends Sprite
{
[Embed(source="files.zip", mimeType="application/octet-stream")]
private var zipContent:Class;
public function TestTextfield()
{
var zip : ZipFile = new ZipFile(new zipContent);
for each(var entry : ZipEntry in zip.entries)
{
var entryContent : ByteArray = zip.getInput(entry);
if(entry.name.indexOf(".xml") != -1)
{
var xmlContent : XML = new XML(entryContent.readUTFBytes(entryContent.bytesAvailable));
trace("File " + entry.name +" :\n" + xmlContent);
}
}
}
}
}
此示例将显示嵌入文件中包含的所有XML文件内容。zip我只能建议您编写某种代码生成脚本。可以有以下选项:
- Flex编译器扩展(更多详细信息或详细信息)。通过这种方式,您可以预处理代码并嵌入元数据。解决方案可以由注释(元标记)驱动
- 蚂蚁脚本
- 您自己的命令行脚本
package
{
import flash.display.Sprite;
import flash.utils.ByteArray;
import nochump.util.zip.ZipEntry;
import nochump.util.zip.ZipFile;
public class TestTextfield extends Sprite
{
[Embed(source="files.zip", mimeType="application/octet-stream")]
private var zipContent:Class;
public function TestTextfield()
{
var zip : ZipFile = new ZipFile(new zipContent);
for each(var entry : ZipEntry in zip.entries)
{
var entryContent : ByteArray = zip.getInput(entry);
if(entry.name.indexOf(".xml") != -1)
{
var xmlContent : XML = new XML(entryContent.readUTFBytes(entryContent.bytesAvailable));
trace("File " + entry.name +" :\n" + xmlContent);
}
}
}
}
}