![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2010
Сообщений: 67
|
Имеются несколько таймеров расположенных в ячейках DataGrid
<mx:DataGrid dataProvider="{arrayData}" > <mx:columns> <mx:DataGridColumn headerText="Время" itemRenderer="renderfortimer" /> </mx:columns> </mx:DataGrid> Вопрос вот в чем, как мне получить доступ к определенному таймеру, например, остановить его, удалить ? и попутный вопрос как можно остановить (удалить) все таймеры? Последний раз редактировалось Lexxx_HU; 26.05.2011 в 18:36. |
|
|||||
|
1)
вар 1 - в итемрендере определить статический массив для таймеров, при создании итемрендера погружать туда ссылку на таймер и итемрендер, при изменении проверять наличие итемрендера и удалять ссылку вар 2 - тоже статической поле, но внутри класса наследуемого от Timer, заносить в массив в конструкторе, при работе проверять наличие рабочей ссылки на таймер 2) такой массив позволит оперировать со всеми таймерами сразу |
|
|||||
|
Регистрация: Oct 2010
Сообщений: 67
|
в итемрендере делаю
public static var arrayTimers:ArrayCollection = new ArrayCollection(); //флаг о том найден ли таймер public var flag:Boolean = false; public var timerSec:Timer = new Timer(1,1); override public function set data(value:Object):void { super.data = value; if (value != null) { trace('количество таймеров - '+arrayTimers.length); timerSec = new Timer(1000,10); for(var i:int = 0; i < arrayTimers.length; i++) { if(arrayTimers[i].item_link == this) { trace('есть такой таймер'); flag = true; break; } else { trace('нет такого таймера'); } } if (!flag) { arrayTimers.addItem({ item_link: this, timer_link: timerSec }); } } } и как мне из основного приложения отключить таймер ? не из итемрендера Последний раз редактировалось Lexxx_HU; 27.05.2011 в 12:09. |
|
|||||
|
- да, примерно про такой способ
- например итем arrayData в ту же коллекцию сохранять, как и линк на итемРендер (помните что список arrayData и визуальный список датагрида не совпадают) - в любом месте приложения виден |
|
|||||
|
Регистрация: Oct 2010
Сообщений: 67
|
если в DataGrid появляется скрол, и мы подвигаем вверх-вниз то происходит перестроение рендеров и соответственно таймеры начинают запускаться от первостепенных значений. как можно с этим бороться ?
|
|
|||||
|
Вы оба пытаетесь подойти к проблеме не с той стороны.
Во-первых, рендереры используются повторно. Т.е. одномоментно, существуют только те рендереры, которые видны. Никто не создает рендереры для всех итемов в dataProvider, это слишком накладно. Во-вторых, смысл рендерера отображать информацию, а не редактировать ее, максимум послать событие, что с ними что-то вытворяют. Не занимайтесь Добавлено через 11 минут Таймеры создавайте отдельно, для каждого итема и складывайте в массив, либо делайте таймер частью итема.
__________________
משיח לא בא משיח גם לא מטלפן |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|