#actionscript-3 #image #actionscript #embed #flixel
#actionscript-3 #изображение #actionscript #Внедрить #flixel
Вопрос:
Я собираю флеш-игру (используя Flixel), и у меня много спрайтов, изображения которых (в основном в формате.png) Мне нужно включить в мою игру. Я привык использовать такой код, как:
[Embed(source = "../../lib/ship-0001.png")]private var _ship0001Sprite:Class;
чтобы включить файл изображения. Есть ли способ, которым я могу это сделать, кроме встраивания? Я бы хотел использовать цикл for, если это возможно, собирая каждый необходимый файл по номеру. Таким образом, вместо этого, если у вас есть несколько строк для каждого типа корабля (чтобы захватить его спрайт, значок, вид хранилища и т. Д.), Я могу просто изменить переменную (например, NUM_SHIP_TYPES) и добавить файлы по номерам для нового корабля.
Является ли внедрение единственным способом сделать это, когда файлы включены в .swf, или есть другой способ, которым я могу это сделать? Или есть способ, которым я могу использовать цикл for с внедрением?
Ответ №1:
Возможно, это не самый популярный ответ. Но это зависит от предпочтений. 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;
} }
Но, как я уже сказал, это полезно только в небольших сценариях, но это означает, что все более разделено, и если бы вы создали интерфейс, это можно было бы легко сделать для заводского шаблона.
Комментарии:
1. На самом деле это хорошая идея, хотя вы, вероятно, правы, что это не лучшая практика. Если я сделаю это таким образом, у каждого типа корабля будет своя папка, и все для этого типа корабля будет в этой папке. Спасибо!
2. Эти файлы классов могут быть сгенерированы автоматически с помощью простого скрипта или инструмента, который просто изменяет числа в именах файлов и заменяет их предопределенным шаблоном.
Ответ №2:
Если у вас много ресурсов, лучший способ — оставить их как внешние файлы и использовать Loader
для их загрузки.
Таким образом, вы можете отображать индикатор выполнения и, как вы сказали, это также упрощает управление вашими ресурсами.
Комментарии:
1. Вы имеете в виду
Loader
?
Ответ №3:
Вы хотите, чтобы объекты были легко доступны в том же swf-файле или вы хотите загрузить их извне. Это был бы первый вопрос, который приходит мне в голову.
-
Если вы хотите встроить изображения в swf: добавьте их все в fla, создайте из него swc и используйте их в своем проекте. Если вы хотите что-то изменить, измените fla. Восстановите swc. Перекомпилируйте.
-
Если вы хотите, чтобы изображения загружались во время выполнения, используйте URLLoader, лично я предпочитаю использовать LoaderMax, который является частью пакета greensock. Это дает вам больше возможностей для работы с загрузкой. Вот пример, который вам поможет: http://www.greensock.com/loadermax-tips /