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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.04.2009, 16:53
Peregrin вне форума Посмотреть профиль Отправить личное сообщение для Peregrin Найти все сообщения от Peregrin
  № 1  
Ответить с цитированием
Peregrin
 
Аватар для Peregrin

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
По умолчанию событие dataChange не срабатывает

вот код компонента:
Код:
<mx:List id="baseList" 
	width="100%" 
	maxHeight="330" 
	dataChange="listDataChangeHandler()"
	itemRenderer="components.ListItemRenderer"/>
Данные в нем меняются по несколько раз, но функция listDataChangeHandler() ни разу не вызывается. В чем может быть дело?

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

Регистрация: Nov 2007
Сообщений: 183
а
Код AS1/AS2:
itemRenderer="components.ListItemRenderer"
это к чему обращение?

Может надо это как привязку данных:
Код AS1/AS2:
itemRenderer="{components.ListItemRenderer}"
и кода ф-и listDataChangeHandler() что то не видно


Последний раз редактировалось Doctor76; 06.04.2009 в 17:19.
Старый 06.04.2009, 17:20
Peregrin вне форума Посмотреть профиль Отправить личное сообщение для Peregrin Найти все сообщения от Peregrin
  № 3  
Ответить с цитированием
Peregrin
 
Аватар для Peregrin

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
Цитата:
Сообщение от Doctor76 Посмотреть сообщение
это к чему обращение?
это обращение к моему itemRenderer'у - компоненту, который находится в папке components. Мне кажется, что там предельно все понятно.
А вот если добавить фигурные скобки, то выдаетсяс ошибка
Цитата:
Сообщение от Doctor76 Посмотреть сообщение
и кода ф-и listDataChangeHandler() что то не видно
Код AS3:
private function listDataChangeHandler():void
{
	trace("listDataChangeHandler()");
}


Последний раз редактировалось Peregrin; 06.04.2009 в 17:22.
Старый 06.04.2009, 17:47
Doctor76 вне форума Посмотреть профиль Отправить личное сообщение для Doctor76 Найти все сообщения от Doctor76
  № 4  
Ответить с цитированием
Doctor76
 
Аватар для Doctor76

Регистрация: Nov 2007
Сообщений: 183
И у меня не вызывается. Правда я флекс тока учу.. Но мне кажется что это св-во нифика не для вызова функции.
По крайне мере если вместо dataChange ---
initialize="listDataChangeHandler()"

то ф-ю вызывает

Старый 06.04.2009, 18:08
cihexe вне форума Посмотреть профиль Отправить личное сообщение для cihexe Найти все сообщения от cihexe
  № 5  
Ответить с цитированием
cihexe

Регистрация: Feb 2009
Сообщений: 36
эмм...проще ручками всунуть эвент: baseList.addEventListener(Event.CHANGE, listDataChangeHandler);

даю 98% гарантию что заработает

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

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
Цитата:
Сообщение от cihexe Посмотреть сообщение
даю 98% гарантию что заработает
неверояно, но сработали именно эти 2%

Старый 06.04.2009, 18:27
cihexe вне форума Посмотреть профиль Отправить личное сообщение для cihexe Найти все сообщения от cihexe
  № 7  
Ответить с цитированием
cihexe

Регистрация: Feb 2009
Сообщений: 36
оставшиеся 2% было долго расписывать =)
вообщем они выглядят следующим образом:
-создаёте новый компонент (FlexModule) основанный на VBox или HBox (можете что вам удобней....и не токо эти...)
-добавляете в тело компонента к примеру CheckBox (id="dataCheckBox" selected="{data.isSelected}")
-добавляете функцию dataChange(){data.isSelected = dataCheckBox.selected}
-добавляете эвент чекбоксу click="dataChange()";
и вуаля - если ваш датапровайдер, даёт список, в котором у объекта есть булевское поле isSelected то данные обновлятся когда вы кликните по чекбоксу
аналогично подставите свой компонент и эвент в зависимости от потребности

Добавлено через 35 секунд
а и совсем забыл...itemRenderer="имяВашегоМодуля"


Последний раз редактировалось cihexe; 06.04.2009 в 18:30.
Старый 06.04.2009, 18:32
Peregrin вне форума Посмотреть профиль Отправить личное сообщение для Peregrin Найти все сообщения от Peregrin
  № 8  
Ответить с цитированием
Peregrin
 
Аватар для Peregrin

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
да у меня и так есть itemRenderer и на изменения данных он реагирует. Мне нужно поймать событие, которое генерится после того как обновился dataProvider моего list'а, но только после того, как все эти дела визуально отобразятся

Старый 06.04.2009, 18:37
cihexe вне форума Посмотреть профиль Отправить личное сообщение для cihexe Найти все сообщения от cihexe
  № 9  
Ответить с цитированием
cihexe

Регистрация: Feb 2009
Сообщений: 36
думаю тогда это тебя 100% обрадует:
в айтемрендерере когда идёт датачейндж сделай следущее:

Код AS3:
        dispatchEvent(new Event("dataChanged"));
а потом его лови

Добавлено через 47 секунд
после того как поменял данные

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

Регистрация: Nov 2006
Адрес: Hamburg
Сообщений: 195
Отправить сообщение для Peregrin с помощью ICQ
Цитата:
Сообщение от cihexe Посмотреть сообщение
а потом его лови
такая мыслишка меня тоже посещала, но потом сразу вылетала.
проблема в том, что, во-первых, не хочу привязываться к конкретный айтемам, во-вторых, таких айтемов в списке, как сам понимаешь, может достигать несколько десятков, и перехватывать несколько десятков событий у меня нету никакого желания. Хочу просто поймать событие, когда мой лист полностью отобразился. Для этого и сделано событие dataChange, но оно по каким-то непонятным причинам не диспатчится

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

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

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


 


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


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