Я пишу Flash-игру, в которой игровые уровни сохраняются в небольших текстовых файлах, которые я хочу встроить в SWF-файл.Мое текущее решение имеет отчетливый запах кода в своем повторении, и я уверен, что есть лучший способ.Мой код в основном:
В классе LevelLoader вставьте все уровни
[Embed( source="levels/1.dat", mimeType="application/octet-stream" )]
protected var level1:Class;
[Embed( source="levels/2.dat", mimeType="application/octet-stream" )]
protected var level2:Class;
Когда уровень должен быть загружен, прочитайте строку:
var bytes:ByteArray;
if ( levelNumber == 1 ) {
bytes = new level1();
} else if ( levelNumber == 2 ) {
bytes = new level2();
}
var levelStr:String = bytes.readMultiByte( bytes.bytesAvailable, bytes.endian );
prepareLevel( levelStr );
У этого подхода есть пара проблем:
- Мне нужно добавить строку для встраивания каждого уровня.Оптимально, все файлы в папке будут автоматически внедрены.
- Уровень не может быть «подготовлен» из строки.Я хотел бы иметь возможность передавать LevelLoader номер уровня или имя уровня в виде строки.
- Я думаю, что все строки хранятся в памяти, а не на диске.
КакМогу ли я запрограммировать это "правильно"?Способен ли ActionScript 3 решить эту проблему?