Встраивание файла с переменной в AS3 + flixel

Недавно я подобрал фликсель (я программировал раньше, но не сразу), и я столкнулся с проблемой. Я пытаюсь создать карты, и в конечном итоге будет доступно несколько карт.

В настоящее время у меня есть файл.txt, в котором есть информация, которая в конечном итоге попадает в массив. Затем я иду от массива к карте с loadmap, Это может быть простой способ выполнить эту задачу, и, возможно, это лучшие способы (я не изучил все возможности с flixel, и если есть какие-либо мнения, продолжайте и дайте мне знать), но пока это хорошо работает.

Как я уже говорил ранее, я пытаюсь сделать это с несколькими картами. Я мог бы сделать это с помощью [Embed(source = "")] для каждого файла.txt, но это может раздражать. Итак, вот мой вопрос: есть ли возможный способ встраивания файла на основе переменной?

Мой класс Map выглядит так:

public function Map(MapSet:String, TileSet:String) 
        {
            super(MapSet, TileSet);
            //more stuff
        }

Сейчас я попробовал:

[Embed(scource="data/MapSets/" + MapSet + ".txt",  mimeType = "application/octet-stream")]private var loadedMap:Class

и тогда я использую:

map = new Map("Map1x1", "ForestTiles");
add(map);

Есть ли возможность сделать это по-другому? Или может я что то не так делаю? Все мнения приветствуются.

2 ответа

Решение

Полезно знать, что делает код при его использовании.

Embed - это метатег. Он говорит компилятору включить определенный файл в файл.swf. Это означает, что это не происходит во время выполнения.

Когда этот код встраивания "выполняется", ваши переменные еще даже не существуют. Вот почему ваш код не может работать.

Несмотря на то, что оно не работает, ваше решение остается в силе: если вам сложно создавать код, напишите программу, которая сделает это за вас. Создайте / используйте программу, которая находит все допустимые файлы в данном каталоге и создает все теги для встраивания. Запустите эту программу перед компилятором.

Чтобы встроить текстовый файл и использовать в качестве строки, попробуйте следующее:

// create source var TextSource
[Embed(source="textFile.txt",mimeType="application/octet-stream")]
private var TextSource:Class;

var myByteArray:ByteArray = new TextSource();
var myString:String = myByteArray.readUTFBytes(myByteArray.length);

// then use for your function
map = new Map("Map1x1", myString);
Другие вопросы по тегам