Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   события update для скроллеров (http://www.flasher.ru/forum/showthread.php?t=163935)

in4core 12.08.2011 12:55

события update для скроллеров
 
Таков вот вопрос. Скроллер по маус-мув делает обновление контента ( тащит по y ) - все стандартно.
Интересует как лучше повесить событие апдейта , когда маус мув не используется, а именно -
При изменении внутренности контента.
Тоесть например, прокрутили мы до середины контента, нажали кнопочку и сменили чайлды контента - нужен апдейт, или же никуда не крутили, но контент стал меньше маски ( скролл теперь не нужен ) - нужен апдейт на это.
По логике нужно создать какое то событие типа евент.CHANGE - для контента? Но при каком случае туда писать? Вариант с изменением кол-ва чайлдов отпадает, это ясно.

Bgg 12.08.2011 13:00

Слушать ENTER_FRAME у контейнера в котором лежит контент и при изменении размеров делать то, что нужно.

in4core 12.08.2011 13:03

Событие фрейма очень мне не нравится, зачем обновлять постоянно счетчик, когда с ним вообще не работают? нафига эти лишние нагрузки.

Bgg 12.08.2011 13:12

Какой ещё счетчик? ENTER_FRAME шлется всегда и везде. Какая ещё нагрузка? На проверку условия из двух параметров?
Код AS3:

private function enterFrameHandler(event:Event):void{
        if(_contentHeight < _container.height || _contentHeight > _container.height){
                _contentHeight = _container.height;
                //меняем скролл.
        }
}

Ну или таймер, если у вас страх перед ENTER_FRAME, но это имхо уже велосипед.

dimarik 12.08.2011 13:16

ENTER_FRAME однозначно.

DaFive 12.08.2011 13:17

Ну если так хочется без ентер-фрейма - ты знаешь когда и где может произойти смена состояния контейнера. Диспатч событие по клику или по чему там еще.

derhab 12.08.2011 16:48

Цитата:

Сообщение от in4core (Сообщение 1020783)
Тоесть например, прокрутили мы до середины контента, нажали кнопочку и сменили чайлды контента - нужен апдейт, или же никуда не крутили, но контент стал меньше маски ( скролл теперь не нужен ) - нужен апдейт на это.
По логике нужно создать какое то событие типа евент.CHANGE - для контента?

слушайте событие Event.ADDED и Event.REMOVED у контейнера контента, проверяйте и меняйте. ENTER_FRAME тут избыточен

Bgg 12.08.2011 16:53

Цитата:

Сообщение от derhab (Сообщение 1020910)
слушайте событие Event.ADDED и Event.REMOVED у контейнера контента, проверяйте и меняйте. ENTER_FRAME тут избыточен

А если в контейнере будет текст?

derhab 12.08.2011 16:57

для текста есть соответствующее событие change
любое изменение в контенте всегда можно отследить именно в момент изменения, нет никакой необходимости проверять состояние контента в каждом кадре

etc 12.08.2011 16:59

derhab, да оно не всплывает. Не говоря уже о простом движении элементов.
Лично я за событие RESIZE.


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

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