Лучший способ включить изображения в AS3, чем вставлять? - PullRequest
3 голосов
/ 04 ноября 2011

Я собираю Flash-игру (используя Flixel), и у меня много спрайтов, изображения которых (в основном в формате .png) мне нужно включить в мою игру.Я привык использовать такой код:

[Embed(source = "../../lib/ship-0001.png")]private var _ship0001Sprite:Class;

, чтобы включить файл изображения.Есть ли способ сделать это кроме встраивания?Я хотел бы использовать цикл for, если это возможно, захватывая каждый необходимый файл по номеру.Таким образом, вместо нескольких строк для каждого типа корабля (чтобы получить его спрайт, значок, представление магазина и т. Д.), Я могу просто изменить переменную (например, NUM_SHIP_TYPES) ​​и добавить файлы по номеру для нового корабля.

Является ли embed единственным способом сделать это, если файлы включены в .swf или есть другой способ сделать это?Или я могу использовать цикл for с embed?

Ответы [ 3 ]

5 голосов
/ 04 ноября 2011

Возможно, это не популярный ответ.Но это зависит от предпочтений.I'm not trying to start a best practices discussion, just listing a possibility.

Если у вас есть несколько изображений для каждого корабля.И такое же количество изображений на каждом корабле, что может быть ниже.Если нет, то полностью игнорируйте то, что я предлагаю.

Создайте папку для каждого типа вашего корабля, а затем файл класса в этой папке и поместите ваши изображения в эту папку рядом с файлами классов.

package shipimages.ship1 { class Ship1Images {
    [Embed(source="0001.png")] public var img0001:Class;
    [Embed(source="0002.png")] public var img0002:Class;
    [Embed(source="0003.png")] public var img0003:Class;
} }

.

package shipimages.ship2 { class Ship2Images {
    [Embed(source="0001.png")] public var img0001:Class;
    [Embed(source="0002.png")] public var img0002:Class;
    [Embed(source="0003.png")] public var img0003:Class;
} }

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

5 голосов
/ 04 ноября 2011

Если у вас много ресурсов, лучше всего оставить их как внешние файлы и использовать Loader для их загрузки.

Таким образом, вы можете отобразить индикатор выполнения и, как вы сказали, еготакже облегчает управление вашими активами.

0 голосов
/ 04 ноября 2011

Хотите ли вы, чтобы объекты были легко доступны в пределах одного SWF-файла, или вы хотите загрузить их извне. Был бы первый вопрос, который приходит мне в голову.

  • Если вы хотите встроить изображения в SWF: добавьте их все во FLA, создайте из них SWC и используйте их в своем проекте. Когда вы хотите что-то изменить, измените флаг. Восстановить SWC. Перекомпилируйте.

  • Если вы хотите, чтобы изображения загружались во время выполнения, используйте UrlLoader, лично я предпочитаю использовать LoaderMax, который является частью пакета greensock. Это дает вам больше возможностей для работы с загрузкой. Вот пример, чтобы помочь вам: http://www.greensock.com/loadermax-tips/

...