Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 是否可以嵌入文件夹中的所有文件?_Flash_Apache Flex_Actionscript 3_Embed_Flash Builder - Fatal编程技术网

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

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

我想嵌入给定文件夹的所有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;

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编译器扩展(更多详细信息或详细信息)。通过这种方式,您可以预处理代码并嵌入元数据。解决方案可以由注释(元标记)驱动
  • 蚂蚁脚本
  • 您自己的命令行脚本

为什么必须嵌入它们;相对于在运行时加载?为什么你需要这么多不同的文件?为什么重要?我只是想知道这是否可能@roberkules对我来说,这听起来像是架构/方法的问题。但是,对于任何开发人员的决定,总是有权衡的余地,所以我不能确定是否知道“为什么”。架构是否好不是问题的一部分。直截了当的问题——是否可能(如果可能,如何可能)。@roberkules是的,当然可能;您已经有了一个在答案中加载多个XML文件的解决方案。这不是“是否可能”式的问题。我正在使用ANT构建项目。使用ANT可能的解决方案是什么样子的?我个人不喜欢ANT,但我可以建议您使用ANT Contrib来迭代目录中的XML文件并获取它们的名称。然后我建议您使用生成的行替换特殊的metatag注释代码;我回来投票表决。我认为ANT脚本方法是解决这个问题的一个非常有创意的方法。正确的想法我将示例从deng.fzip改进为nochump.utils.zip你可以访问我的网站它是嵌入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);
                }
            }
        }

    }
}