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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.01.2011, 19:17
adi.belis вне форума Посмотреть профиль Отправить личное сообщение для adi.belis Найти все сообщения от adi.belis
  № 1  
Ответить с цитированием
adi.belis

Регистрация: Aug 2009
Сообщений: 53
По умолчанию Вопрос по теории "livecycle createChildren".

Всем привет .

В некоторых источниках мне попадалась информация о том что создавать объекты надо в переопределеном методе "createChildren".
Проблема состоит в том что если использовать "set" для определения объекта то сетер проходит раньше чем "createChildren" что преводит к ошибке.
Вопрос такой в каких случаях определять объекты в методе "createComplite" а каких в методе "createChildren" ?
Всем спасибо.

Старый 07.01.2011, 22:24
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 2  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Вопрос такой в каких случаях определять объекты в методе "createComplite"
Ни в каких. Особенно учитывая, что у UIComponent нет метода "createComplite", только событие creationComplete.
Цитата:
Проблема состоит в том что если использовать "set" для определения объекта то сетер проходит раньше чем "createChildren" что преводит к ошибке.
Какого объекта? Какой ошибке?

Старый 08.01.2011, 02:09
adi.belis вне форума Посмотреть профиль Отправить личное сообщение для adi.belis Найти все сообщения от adi.belis
  № 3  
Ответить с цитированием
adi.belis

Регистрация: Aug 2009
Сообщений: 53
Здравствуйте.

Код AS3:
public function VideoPlayer()
{
	super();
}
public function set source(value:String):void
{
     player.source = value;
}
protected override function childrenCreated():void
{
	//TODO Auto-generated method stub
	super.childrenCreated();
	player = new VideoDisplay()
	player.addEventListener(VideoEvent.READY,redyHandler);
	player.addEventListener(VideoEvent.COMPLETE,onComplete);
	this.addElement(player)
 
}
ошибка видается в сетере null object.
поетом я перекинул создание объекта player в конструктор.

Старый 08.01.2011, 03:15
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 4  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
По-моему, у флекса такая иделогия
Код AS3:
private var _source:String;
private var sourceChanged:Boolean = false;
public function set source(value:String):void
{
    if (_source == value) return;
    _source = value;
    sourceChanged = true;
    invalidateProperties();
}
override protected function createChildren():void
{
    //TODO Auto-generated method stub
    super.createChildren();
 
    if (!player)
    {
	player = new VideoDisplay();
	player.addEventListener(VideoEvent.READY, player_readyHandler);
	player.addEventListener(VideoEvent.COMPLETE, player_completeHandler);
	this.addElement(player);
    }
}
 
override protected function commitProperties():void
{
    super.commitProperties();
    if (sourceChanged && player)
    {
        player.source = source;
        sourceChanged = false;
    }
}

Старый 08.01.2011, 14:03
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 5  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
По-моему, у флекса такая иделогия
Именно, такая.

Старый 09.01.2011, 13:31
adi.belis вне форума Посмотреть профиль Отправить личное сообщение для adi.belis Найти все сообщения от adi.belis
  № 6  
Ответить с цитированием
adi.belis

Регистрация: Aug 2009
Сообщений: 53
а можно немножко по подробнее зачем запускать метод "invalidateProperties" .

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Что бы был вызван commitProperties.

Добавлено через 1 минуту
invalidateSize() – в следующем цикле будет вызван measure. //расчет минимальных размеров.
invalidateProperties() – commitProperties. //применение/проверка свойств.
invalidateDisplayList() – updateDisplayList. //отрисовка компонента и позиционирование его детей.


Последний раз редактировалось alatar; 09.01.2011 в 13:39.
Старый 09.01.2011, 14:26
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 8  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Вопрос с какого-то собеседования, нет? Меня тоже как-то спрашивали. И да, ожидаемый ответ -- что-то в духе как fljot описал. Но мне если чесно такая "непрозрачная" идеология не нравится. Т.е. как по мне имеет место попытка защиты от дурака предполагая, что человек использующий этот код обязательно дурак, что кроме всего прочего приводит к написанию лишнего кода. И, мое мнение, что если ошибка возможна, но легко устраняется пользователем, то ее нужно оставлять, и предоставлять пользователю возможность ее обработать, вместо того, чтобы городить кучу АПИ, которые мало того, что в 8 случаях из 10 будут лишними, так еще и в 1 случае из 10 будут вредными.
__________________
Hell is the possibility of sanity

Старый 09.01.2011, 14:55
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 9  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Чего в ней непрозрачного? Все фреймворки построения компонентов используют свой live cycle. Вполне логично, что программист должен ему следовать.
Цитата:
И, мое мнение, что если ошибка возможна, но легко устраняется пользователем, то ее нужно оставлять
Здесь ошибка программиста, а не пользователя.
Код AS3:
вместо того, чтобы городить кучу АПИ, которые мало того, что в 8 случаях из 10 будут лишними, так еще и в 1 случае из 10 будут вредными.
В этих случаях никто не заставляет использовать UIComponent в качестве базового для компонента. Вполне достаточно спрайта.

Старый 09.01.2011, 19:48
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Как человек использовавший, пусть и не часто .NET фреймворк, могу с уверенностью заявить, что такого там нет. И вообще, если ошибиться десять раз, и один раз сделать правильно, то от этого ошибочное решение правильным не станет, так что, все или не все, это не аргумент. Есть логика и практика, логика говорит, что это не нужно и практика подтверждает, что это ни разу не пригодилось (мне лично) -- т.е. чистой воды балласт. Но, соглашусь, ни в этом, ни в каком другом случае UIComponent использовать не нужно ну или разве что чтобы процессор погреть, а то вдруг остынет и не заведется больше
__________________
Hell is the possibility of sanity

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

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

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


 


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


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