PDA

Просмотр полной версии : Слушатель для рендерера


djyamato
30.09.2014, 03:14
Здравствуйте.
Я как-то не задумывался, а теперь вопрос стал важным
Когда я пишу

<fx:Script>
<![CDATA[
private function roomsList_rendererAddHandler(event:RendererExistenceEvent):void
{
event.renderer.addEventListener(MouseEvent.CLICK, roomSelectHandler);
}

private function roomsList_rendererRemoveHandler(event:RendererExistenceEvent):void
{
event.renderer.removeEventListener(MouseEvent.CLICK, roomSelectHandler);
}

private function roomSelectHandler(event:MouseEvent):void
{
// TODO Auto Generated method stub
}
]]>
</fx:Script>
<s:List id="roomsList"
width="100%"
height="100%"
dataProvider="{pm.roomsProvider.rooms}"
rendererAdd="roomsList_rendererAddHandler(event)"
rendererRemove="roomsList_rendererRemoveHandler(event)">
<s:layout>
<s:TileLayout horizontalGap="10"
verticalGap="10"
orientation="columns"
requestedColumnCount="4"/>
</s:layout>
</s:List>


Сработает ли удаление слушателя на рендерере если, допустим, стэйт сменился на тот, в котором нет моего List - а ?
Или руками нужно отписываться ?

ShockWave512
01.10.2014, 01:34
Нехорошее что то на вид затеяно. :)

Лучше подписаться на change списка, или click List-a.

djyamato
01.10.2014, 02:51
Нехорошее что то на вид затеяно. :)

Лучше подписаться на change списка, или click List-a.
Change списка не рассылается когда пользователь нажимает на уже выделенный айтем.
Мой код - обычная практика, где-то в мануалах по флексу давным давно подсмотрел, так все время и пользуюсь...

ShockWave512
01.10.2014, 03:01
ну так потому и не рассылается, раз выделен

если надо нажать элемент на самом итеме, внутри него и надо подписываться

клик рендера - это функционал рендера, в списке его делать не стоит (как совет)

djyamato
01.10.2014, 03:22
Спасибо за совет.
Я хочу, все же, узнать, отписываться руками или флекс сам убъет слушателей ? (я про свой код)

ShockWave512
01.10.2014, 03:52
В жизни не удалял, наверно потому что сам чистит.

Сейчас проверяю доку, самому интересно.

Вообще это факап для меня, никогда не задумывался.
..............................................
Вообщем везде молчок про это, видимо одна из "прелестей" флекса. Скорей всего из за того что ссылка на слушатель обычно внутри компонента, это не вызывает проблем со сборщиком мусора и не генерирует больших проблем разрабам.
https://forums.adobe.com/thread/1041322