是否可以嵌入文件夹中的所有文件?
我想嵌入给定文件夹的所有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;
[Embed(source="../somefolder/file3.xml", mimeType="application/octet-stream")]
private var MyClass3:Class;
和
var file:XML;
var bytes:ByteArray;
switch (fileId) {
case 1:
bytes = new MyClass1();
break;
case 2:
bytes = new MyClass2();
break;
case 3:
bytes = new MyClass3();
break;
}
file = new XML(bytes.readUTFBytes(bytes.length));
的XML文件的列表将增长到10以上的文件,所以我在寻找一个更优雅的和动态的方式来嵌入这些文件。
这些文件应该嵌入到编译中,通过URLLoader加载它们不是一个选项。
任何想法?
我不认为有一种方法可以这样做:
[Embed(source="../somefolder/*", mimeType="application/octet-stream")]
但是你可以使用一个ZIP文件并访问其内容。我经常用http://nochump.com/blog/archives/15做到这一点kaind的事情:
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);
}
}
}
}
}
本例将显示包含在嵌入式files.zip
正确的思想我已经从提高例如deng.fzip到nochump.utils.zip 您可以访问我的网站http://sourceskyboxer.byethost16.com/dengfziptonochumputilszip它嵌入压缩载荷图标 – SourceSkyBoxer 2016-01-27 20:38:27
所有的XML文件内容我只能建议你写某种代码生成的脚本。可以有以下选择:
我使用Ant构建项目。如何使用ANT的可能解决方案? – roberkules 2011-05-31 12:53:12
我不喜欢Ant,但我可以建议你使用Ant Contrib的['Foreach'任务](http://ant-contrib.sourceforge.net/tasks/tasks/foreach.html)来迭代XML文件你的目录并获取他们的名字。然后,我建议您使用['ReplaceRegExp'任务](http://ant.apache.org/manual/Tasks/replaceregexp.html)将您的特殊元标注代码替换为生成的行。 – Constantiner 2011-05-31 13:04:54
看到这个答案并对它进行一些思考之后;我回来补充了它。我认为ANT脚本方法是一个非常有创意的解决方案。 – JeffryHouser 2011-05-31 23:25:47
为什么他们必须嵌入;而不是在运行时加载?为什么你需要这么多不同的文件? – JeffryHouser 2011-05-31 12:43:09
为什么?我只是想知道是否有可能。 :) – roberkules 2011-05-31 12:47:48
@roberkules对我来说,这听起来像是一个问题/体系结构/方法。但是,对于任何开发决策,总是有权衡的,所以不知道为什么,我不能肯定地说。 – JeffryHouser 2011-05-31 12:53:25