是否可以嵌入文件夹中的所有文件?

是否可以嵌入文件夹中的所有文件?

问题描述:

我想嵌入给定文件夹的所有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加载它们不是一个选项。

任何想法?

+0

为什么他们必须嵌入;而不是在运行时加载?为什么你需要这么多不同的文件? – JeffryHouser 2011-05-31 12:43:09

+0

为什么?我只是想知道是否有可能。 :) – roberkules 2011-05-31 12:47:48

+1

@roberkules对我来说,这听起来像是一个问题/体系结构/方法。但是,对于任何开发决策,总是有权衡的,所以不知道为什么,我不能肯定地说。 – JeffryHouser 2011-05-31 12:53:25

我不认为有一种方法可以这样做:

[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

+0

正确的思想我已经从提高例如deng.fzip到nochump.utils.zip 您可以访问我的网站http://sourceskyboxer.byethost16.com/dengfziptonochumputilszip它嵌入压缩载荷图标 – SourceSkyBoxer 2016-01-27 20:38:27

所有的XML文件内容我只能建议你写某种代码生成的脚本。可以有以下选择:

  • Flex编译器扩展(更多详情herehere)。这样你可以预处理你的代码并嵌入元数据。解决方案可以是注释(元标签)驱动。
  • Ant脚本。
  • 您自己的命令行脚本。
+0

我使用Ant构建项目。如何使用ANT的可能解决方案? – roberkules 2011-05-31 12:53:12

+0

我不喜欢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

+0

看到这个答案并对它进行一些思考之后;我回来补充了它。我认为ANT脚本方法是一个非常有创意的解决方案。 – JeffryHouser 2011-05-31 23:25:47