Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.07.2014, 14:31
Psijic вне форума Посмотреть профиль Отправить личное сообщение для Psijic Найти все сообщения от Psijic
  № 11  
Ответить с цитированием
Psijic

Регистрация: 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-ов должно, по сути, быть равно количеству заданных вами для инициализации контролов.

В чем смысл:
Пользователь задает объекты в массиве
Код AS3:
    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}
 
    ];
где в случае для кнопки: normalTexture - текстура по умолчанию, selectedTexture - текстура по нажатию.
Далее прогоняется цикл по заданным объектам и создаются Initializer-ы
Код AS3:
        var l: uint = initializableObjects.length;
        for (var i: int = 0; i < l; i++)
        {
            var unit: Object = initializableObjects[i];
            new Initializer(unit, setInitializerForClass);
        }
Инициализатор смотрит тип объекта и создает соотв. функцию инициализации.
В примере кнопки инициализация сама подставляет остальные названия текстур - Hover, Click по образцу. Если таких текстур нет в атласе - ничего не делает с ними.

Старый 02.07.2014, 15:11
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 12  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Получается, что на каждый компонент у Вас создается инстенс Initializer?)
Код AS3:
 var l: uint = initializableObjects.length;
        for (var i: int = 0; i < l; i++)
        {
            var unit: Object = initializableObjects[i];
            new Initializer(unit, setInitializerForClass);
        }
Но зачем? Зачем компоненту кнопка иметь тридцать методов-фабрик для скрол-бара и т.д.?
Зачем вообще плодить экземпляры Initializer с десятками методов? Класс-источник, это и есть фабрика!
При чем нормальная! Немного его переписать и все.

Старый 02.07.2014, 15:35
Psijic вне форума Посмотреть профиль Отправить личное сообщение для Psijic Найти все сообщения от Psijic
  № 13  
Ответить с цитированием
Psijic

Регистрация: Aug 2012
Сообщений: 108
Да, Initializer создается т.к. каждому компоненту нужна своя функция инициализации. Альтернативой можно прописать в функции инициализации подстановку текстур в зависимости от имени компонента. Но тогда будет нужен словарь соответствия. В данном случае все задано в одном классе и лишняя память не тратится, так что с этим ок, хотя хотелось бы и вынести нужные функции. Есть предложения-примеры?


Последний раз редактировалось Psijic; 02.07.2014 в 15:56.
Старый 02.07.2014, 17:31
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 14  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Складывается такое чувство, что у Вас недостаточно опыта и Вы мало изучили код, так-как
пытаетесь сделать уже сделанное, но только неправильно...
Цитата:
и лишняя память не тратится
Как же не тратится, когда был один класс с фабрикой, а теперь этих фабрик будет столько, сколько компонентов?
Вы залезли под капот veyron и просите показать пример, как взять в руки гаечный ключ?
Вы явно не тем занимаетесь. Я тоже под микроскопом изучал эти компоненты и даже хотел переписать их
для себя на флеш, но потом подумал и решил, что это глупая трата времени.

Старый 02.07.2014, 19:17
Psijic вне форума Посмотреть профиль Отправить личное сообщение для Psijic Найти все сообщения от Psijic
  № 15  
Ответить с цитированием
Psijic

Регистрация: Aug 2012
Сообщений: 108
Общие методы класса задаются в памяти 1 раз, потому она и не тратится. И не надо придумывать тут красочных аллегорий. Альтернативного метода от создателя veyron так и не увидел.

Старый 02.07.2014, 20:09
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 16  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
А Вы случаем не с js путаете? Сто экземпляров - сто раз повторятся одни и те же методы, если они правда не помечены, как методы класса ( static ). И это не аллегории, а ООП! И создатель Вам ничего не навязывает не нравится не пользуйтесь.
Ну а вообще, чтобы Вам не казалось, что я Вас критикую, то скажу следующее - Вы правильно делаете, в плане - не устраивает, я и переделываю. Но вот только, как я уже сказал, Вашей идеи чего-то не хватает.

Старый 02.07.2014, 20:54
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 17  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
чего-то во всем этом мне кажется в итоге вы придете к обычному рефлекту а-ля:
Код:
{type:SomeClass,initMethod:"someInitMethodInClass",params:[]}
{type:SomeClass,initMethod:"someInitMethodInClass",params:[]}
Код AS3:
for each(var context:Object in someHash){
(new context.type()[context.initMethod] as Function).apply(null,context.params);
}
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 02.07.2014, 23:30
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 18  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
параметров и уникальности... эх

Код AS3:
for(var i:int = 0; i < 10; i++)
{
   var o:FunctionCompleted = new FunctionComplited();
   o.uniq = i;
   o.params = {};
   array.push( o )
}
__________________
Марк Tween

Старый 03.07.2014, 02:31
Psijic вне форума Посмотреть профиль Отправить личное сообщение для Psijic Найти все сообщения от Psijic
  № 19  
Ответить с цитированием
Psijic

Регистрация: Aug 2012
Сообщений: 108
LifeIsRhythm
static не наследуется и загружается в память сразу. Одна и та же функция повторится 100 раз если ее вызвать в цикле - и что?
cleptoman
возможно, надо попробовать
in4core
что есть FunctionComplited? Выглядит как класс

Старый 03.07.2014, 03:23
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 20  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Немного философии. Рекомендую посмотреть в сторону настоящего CSS. Flash Builder частично поддерживает версию CSS 3.0. Но что самое важное, он работает с CSS Namespaces. Поддержка включает в себя автокомплит по существующим дефинишинам, неймспейсам, а также проверку синтаксиса. Обладая знанием о конкретно вашей структуре классов, он может помочь вам собрать валидный текст css. Позже, в рантайме эту css нужно распарсить и применить стили к компонентам по правилам стандарта CSS. Парсер удобно сгенерировать на основе грамматики CSS с помощью генератора парсеров, у которого в качестве target есть ActionScript 3.0. Вероятно, можно посмотреть в сторону antlr. На выходе вы должны получить некоторое дерево AS3 объектов, олицетворяющее первоначальную структуру css. Прогоняя каждый компонент в приложении через эту структуру можно выяснить окончательный набор стилевых свойств для него.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Создать новую тему Ответ Часовой пояс GMT +4, время: 17:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
класс , функция , экземпляр

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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