Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Flash-скинирование (загрузка растра) (http://www.flasher.ru/forum/showthread.php?t=125268)

marat_sa 20.05.2009 11:45

Flash-скинирование (загрузка растра)
 
Здравстуйте, начал писать игру и хотелось бы сделать для нее поддержку скинов. Нашел на форуме много тем по поводу скинирования. Понял, что лучше использовать растровую графику. В принципе мне это подходит. Подскажите пожалуйста, с какой стороны подойти к этой задаче, с чего начать? Нужно писать какой-то масс-прелоадер с массивом адресов картинок, по окончании загрузки отрисовывать каждую картинку в Bitmap, назначать ее какому-нибудь классу, чистить loader и грузить следующую?
Как вы делаете? Может есть уже готовые мультилоадеры? Заранее спасибо :)

cleptoman 20.05.2009 12:36

я делал немного по другому..

грузил 1 файл со всей нужной графикой и ХМЛ с координатами и размерами нужных мне элементов в этом графическом файле..

затем просто дербанил этот файл на кусочки

Код AS3:

public static function createBMPFromSprite(_bmp:BitmapData,tx:Number,ty:Number,w:Number,h:Number):BitmapData{
        var __bmp:BitmapData = new BitmapData(w,h,true,0);
        var _matrix:Matrix = new Matrix();
        _matrix.translate(-tx,-ty);
        __bmp.draw(_bmp,_matrix);
                        return __bmp;
}


marat_sa 20.05.2009 13:10

Даже так?! О_о
Круто конечно, но по-моему... не гибко что ли... Нужно нам, допустим 1 иконку подправить, контраст там или блюр наложить, это всю эту штуку надо в редактор сувать, всякие доп. действия делать. Но тоже вариант.

Волгоградец 20.05.2009 13:30

Я картинки храню в .swf и оттуда эмбежу.

relevance4 20.05.2009 13:45

скины в swf - очень универсально

marat_sa 20.05.2009 13:46

В смысле эмбежу? Метатегом EMBED? В этом случае для смены скина придется перекомпилировать игру...
А если делать всю графику через linkage в swf-файле, а потом грузить эту 1 swf, как общую либу, и все просто парсить на классы.
Код AS3:

public var ButtonClass:Class;
public var BackGroundClass:Class;
...
 
//по окончании загрузки
ButtonClass = loader.contentLoaderInfo.applicationDomain.getDefinition("Button") as Class;
BackGroundClass = loader.contentLoaderInfo.applicationDomain.getDefinition("BackGroundPicture") as Class;
...

Типа так... Это возможно? Рационально?

etc 20.05.2009 14:30

Лучше описывать скины посредством css.

marat_sa 20.05.2009 14:44

Можно пример или ссылку, пожалуйста?

Волгоградец 20.05.2009 14:49

Вы про Flex Skin Design Extensions? Как без него можно, тоже очень интересно.

marat_sa 20.05.2009 14:53

Ну вообще я имел ввиду скинование во Flash и желательно, собственными силами.

Волгоградец 20.05.2009 15:13

Мой пост _etc'у адресован ).

marat_sa 20.05.2009 15:24

А... Понятно :)
Ну я так, чтоб от темы не отклоняться напомнил о чем собственно речь)))))

etc 20.05.2009 15:28

Цитата:

Сообщение от marat_sa (Сообщение 821465)
Можно пример или ссылку, пожалуйста?

Ну во всяком случае, подобным образом заскинованы все интерфейсы из игры в моей подписи :)

marat_sa 20.05.2009 15:47

2 __etc
Предлагаете декомпилить DESTINY? )))
Ненене... Это же не наши методы! Лучше пример, если не трудно.
Я так понимаю, вышеупомянутый способ с CSS - для Flash (не Flex)?

Кстати, вот еще тут вопрос возник:
Ну разобрали мы все по классам. И тут нам нужно создать собственно эту загруженную кнопку в определенном месте экрана. Нам вручную нужно прописывать координаты. Это не очень удобно. Можно же расставить в "скелете" игры какие-нить "пустышки" в тех местах, где должны быть наши динамически созданные объекты, далее создаем нашу кнопку с координатами и размерами той самой "пустышки", после чего пустышку... уничтожаем.

Можно так сделать или есть способ полегче?

etc 20.05.2009 17:29

marat_sa, да клиент скачать можно, вся мысль там прямо в xml с css.

Правда, решение нетривиальное, но как вариант.

relevance4 20.05.2009 18:08

так речь о методе подключения скинов или о методе их хранения? (:

marat_sa 20.05.2009 20:03

Речь идет и о том и о другом, собственно в целом о скиновании. Но я чувствую, что за этим скрывается великая тайна мирового масштаба %\

__etc, форум предназначен для рекламирования модераторами собственного продукта или для помощи участникам в решении их проблем? ;)

P.S.: Вот уж действительно на американском форуме отвечают на поставленные вопросы, на еврейском отвечают вопросом на вопрос, а на русском назовут нубом или некропостером или отправят читать доки (может неточно, но суть вроде передал) - простите за флуд...

etc 20.05.2009 20:07

Описывать словами долго. В кратце: все параметры скинов задаются в CSS, там же указывается url либы с графикой и имена классов-ассетов. Т. е. нужно написать движок, который парсит этот css, загружает либы и распихивает графику по углам.

marat_sa 20.05.2009 22:29

А, ну то есть самописный, понятненько)) Спасибо

Вот еще насчет
>распихивает графику по углам - координаты прописываются чтоли?

etc 20.05.2009 22:40

Необязательно. Скин можно условно поделить на таблицу (матрицу) из ячеек. Столбец или строка или расстягиваются или нет. Эти ячейки и заполняются графикой, где-то текстурой, где-то просто одним куском. Т. е. достаточно задать ширину и высоту скина, размеры матрицы скина и столбцы со строками, который должны при измении размеров расстягиваться и изменять размеры графики внутри своих ячеек.
Скажем, для текстового поля будет матрица 3 x 3 и три разных графических элемента — левый верхний угол, верхняя и центральная часть, остальные части получаются путем отражения или текстурирования первых трех. Первый столбец и строка матрицы расстягиваются (считаем от 0), т. е. графика идет текстурой.
Ну как-то так. Если сверху этого навесить всяких плюшек, то можно заскиновать всё что угодно и как угодно.

silin 20.05.2009 23:06

т.е. это созданный вами набор правил и парсер, который читает описания по этим правилам ?
а причем здесь тогда css ?

etc 20.05.2009 23:12

silin, при том, что правила скинования и описаны в css :)
Размеры матрицы, столбцы-строки, элементы — всё там.

silin 20.05.2009 23:16

извиняюсь, если невпопад, но ведь это к штмл-ным таблицам не имеет же отношения?
почему css, а не просто xml

etc 20.05.2009 23:20

А как же разделение представления от содержания? XML описывает структуру интерфейса, а css — графическое представление этого интерфейса.
Ну, т. е. что-то типа html + css, только во флеше.

silin 20.05.2009 23:30

ага,
хотя я так и не понял ( не в теме совсем)
систему скинования не удобнее тоже в хмл держать? в чем кайф css, если его парсить вручную нужно или это только терминология, а на самом деле хмл и есть?

AL.exe 21.05.2009 00:40

В том, что руками удобее править css, чем xml? :)

BlooDHounD 21.05.2009 00:50

AL.exe, реюзинг в разных xml.

Ariel 03.04.2010 10:34

Гр-н Силин выразил мои мысли относительно ТАКОГО использования CSS в проекте. Не могу понять, зачем выносить описание скинов из XML. Еще можно добавить, что XML льётся хоть через RPC\SOAP\Remoting и легко прикручивается к различным скриптам для поддержки через CMS. А с CSS? Могут архитектора за такое решение и к ответу призвать. Ну, или каждый раз переспрашивать, почему мы через такое место скины представляем... Бедняга-архитект устанет отругиваться и посылать каждый раз новых людей на корпоративный ВИКИ.


Часовой пояс GMT +4, время: 21:28.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.