Можно ли встраивать все файлы из папки? - PullRequest
2 голосов
/ 31 мая 2011

Я хочу встроить все 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 не вариант.

Есть идеи?

Ответы [ 2 ]

6 голосов
/ 31 мая 2011

Я не думаю, что есть способ сделать что-то вроде:

[Embed(source="../somefolder/*", mimeType="application/octet-stream")]

Но вы можете использовать Zip-файл и получить доступ к его содержимому. Я часто использую http://nochump.com/blog/archives/15, чтобы делать такие вещи:

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

4 голосов
/ 31 мая 2011

Я могу только предложить вам написать какой-нибудь скрипт генерации кода. Возможны следующие варианты:

  • Расширения компилятора Flex (подробнее здесь или здесь ). Таким образом, вы можете предварительно обработать ваш код и встроить метаданные. Решением может быть аннотирование (метатеги).
  • Сценарий Ant.
  • Ваш собственный скрипт командной строки.
...