|
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
Небольшое отступление. К сожалению, последняя фраза Джоша по поводу моей разработки была:
- Maybe a little complicated for my taste, but if it makes your life easier, I say go for it. Initializer - по сути, фабрика/конструктор, который выполняет инициализацию текущего компонента(контрола). Сейчас в примере написаны обработчики только для Button и ProgressBar, остальные надо добавлять. Количество Initializer-ов должно, по сути, быть равно количеству заданных вами для инициализации контролов. В чем смысл: Пользователь задает объекты в массиве protected var initializableObjects: Array = [ {"type": Button, normalTexture: "play", selectedTexture: "pause", name: Names.BUTTON_PLAY_PAUSE}, {"type": Button, normalTexture: "fullscreen_on", selectedTexture: "fullscreen_off", name: Names.BUTTON_FULLSCREEN} ]; Далее прогоняется цикл по заданным объектам и создаются Initializer-ы var l: uint = initializableObjects.length; for (var i: int = 0; i < l; i++) { var unit: Object = initializableObjects[i]; new Initializer(unit, setInitializerForClass); } В примере кнопки инициализация сама подставляет остальные названия текстур - Hover, Click по образцу. Если таких текстур нет в атласе - ничего не делает с ними. |
|
|||||
[+1 22.07.14]
[+4 12.08.14] [+1 09.02.15] Регистрация: May 2014
Сообщений: 182
|
Получается, что на каждый компонент у Вас создается инстенс Initializer?)
var l: uint = initializableObjects.length; for (var i: int = 0; i < l; i++) { var unit: Object = initializableObjects[i]; new Initializer(unit, setInitializerForClass); } Зачем вообще плодить экземпляры Initializer с десятками методов? Класс-источник, это и есть фабрика! При чем нормальная! Немного его переписать и все. |
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
Да, Initializer создается т.к. каждому компоненту нужна своя функция инициализации. Альтернативой можно прописать в функции инициализации подстановку текстур в зависимости от имени компонента. Но тогда будет нужен словарь соответствия. В данном случае все задано в одном классе и лишняя память не тратится, так что с этим ок, хотя хотелось бы и вынести нужные функции. Есть предложения-примеры?
Последний раз редактировалось Psijic; 02.07.2014 в 15:56. |
|
|||||
[+1 22.07.14]
[+4 12.08.14] [+1 09.02.15] Регистрация: May 2014
Сообщений: 182
|
Складывается такое чувство, что у Вас недостаточно опыта и Вы мало изучили код, так-как
пытаетесь сделать уже сделанное, но только неправильно... Цитата:
Вы залезли под капот veyron и просите показать пример, как взять в руки гаечный ключ? Вы явно не тем занимаетесь. Я тоже под микроскопом изучал эти компоненты и даже хотел переписать их для себя на флеш, но потом подумал и решил, что это глупая трата времени. |
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
Общие методы класса задаются в памяти 1 раз, потому она и не тратится. И не надо придумывать тут красочных аллегорий. Альтернативного метода от создателя veyron так и не увидел.
|
|
|||||
[+1 22.07.14]
[+4 12.08.14] [+1 09.02.15] Регистрация: May 2014
Сообщений: 182
|
А Вы случаем не с js путаете? Сто экземпляров - сто раз повторятся одни и те же методы, если они правда не помечены, как методы класса ( static ). И это не аллегории, а ООП! И создатель Вам ничего не навязывает не нравится не пользуйтесь.
Ну а вообще, чтобы Вам не казалось, что я Вас критикую, то скажу следующее - Вы правильно делаете, в плане - не устраивает, я и переделываю. Но вот только, как я уже сказал, Вашей идеи чего-то не хватает. |
|
|||||
чего-то во всем этом мне кажется в итоге вы придете к обычному рефлекту а-ля:
{type:SomeClass,initMethod:"someInitMethodInClass",params:[]} {type:SomeClass,initMethod:"someInitMethodInClass",params:[]}
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
LifeIsRhythm
static не наследуется и загружается в память сразу. Одна и та же функция повторится 100 раз если ее вызвать в цикле - и что? cleptoman возможно, надо попробовать in4core что есть FunctionComplited? Выглядит как класс |
|
|||||
.
|
Немного философии. Рекомендую посмотреть в сторону настоящего CSS. Flash Builder частично поддерживает версию CSS 3.0. Но что самое важное, он работает с CSS Namespaces. Поддержка включает в себя автокомплит по существующим дефинишинам, неймспейсам, а также проверку синтаксиса. Обладая знанием о конкретно вашей структуре классов, он может помочь вам собрать валидный текст css. Позже, в рантайме эту css нужно распарсить и применить стили к компонентам по правилам стандарта CSS. Парсер удобно сгенерировать на основе грамматики CSS с помощью генератора парсеров, у которого в качестве target есть ActionScript 3.0. Вероятно, можно посмотреть в сторону antlr. На выходе вы должны получить некоторое дерево AS3 объектов, олицетворяющее первоначальную структуру css. Прогоняя каждый компонент в приложении через эту структуру можно выяснить окончательный набор стилевых свойств для него.
|
Часовой пояс GMT +4, время: 17:43. |
|
« Предыдущая тема | Следующая тема » |
Теги |
класс , функция , экземпляр |
|
|