Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Завершение ресайза (http://www.flasher.ru/forum/showthread.php?t=164721)

igrik 18.08.2011 12:52

Завершение ресайза
 
есть событие Event.RESIZE:
Код AS3:

stage.addEventListener(Event.RESIZE, resizeHandler);

при ресайзе флешки вызывается resizeHandler, как отловить завершение ресайза?

in4core 18.08.2011 13:03

например таймером. Суешь таймер в resizeHandler - если в течении 3 секунд например ресайз не происходит - ловим событие остановки ресайза. Тока непонятно зачем это нужно

goodguy 18.08.2011 13:04

Ресайз чего? Всей сцены? Это и есть в данном случае Event.RESIZE.
После этого события уже будут доступны новые значения stageWidth и stageHeight

igrik 18.08.2011 13:06

Цитата:

Сообщение от in4core (Сообщение 1022822)
например таймером. Суешь таймер в resizeHandler - если в течении 3 секунд например ресайз не происходит - ловим событие остановки ресайза. Тока непонятно зачем это нужно

Чтобы при ресайзе менять качество для быстродействия, а затем возвращать его обратно.

Добавлено через 3 минуты
Цитата:

Сообщение от goodguy (Сообщение 1022824)
...
После этого события уже будут доступны новые значения stageWidth и stageHeight

То есть постоянно проверять, не изменились ли stageWidth и stageHeight?

Genzo 18.08.2011 13:11

Цитата:

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

Sergespb 18.08.2011 13:15

Я думаю тут было бы идеально каким-либо образом отловить событие MOUSE_UP после ресайза. Ведь именно этим и заканчивается ресайз.

КорДум 18.08.2011 13:17

Цитата:

Сообщение от Sergespb (Сообщение 1022836)
Я думаю тут было бы идеально каким-либо образом отловить событие MOUSE_UP после ресайза. Ведь именно этим и заканчивается ресайз.

С чего Вы взяли? Если ресайз совершается по нажатию мыши, то да.

wvxvw 18.08.2011 14:00

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

igrik 18.08.2011 14:20

Цитата:

Сообщение от wvxvw (Сообщение 1022850)
Если флешка ваша, и обработчик resize всего один, то он же и будет и первым и последним... Если вы не уверены, что обработчик всего один, то, я если честно, не совсем представляю, как это сделать, но и практического смысла в этом не вижу... Можете описать зачем это нужно?

Не очень понял, обработчик один. Задача - менять stage.quality при ресайзе, а затем возвращать его обратно. Вопрос в том, как поменять его обратно, то есть среагировать на завершение события Event.RESIZE.

Genzo 18.08.2011 14:25

Событие Event.RESIZE является конечным , оно возникает после того как размер изменился , в его обработчике нужно возвращать исходное качество , а не менять его.

Цитата:

Можете описать зачем это нужно?

igrik 18.08.2011 14:41

Цитата:

Сообщение от Genzo (Сообщение 1022861)
Событие Event.RESIZE является конечным , оно возникает после того как размер изменился , в его обработчике нужно возвращать исходное качество , а не менять его.

Понятно, спасибо

wvxvw 18.08.2011 14:46

Событие resize случается с определенной дискретностью во времени. Т.е. если вы растягиваете медленно окно с флешкой, то оно будет случаться, в зависимости от плеера, оси, браузера и т.п. с каким-то интервалом. Интервал вам заранее не известен. Закончится ли изменение размеров - вам тоже не известно (может быть так, что и не закончится вообще, если вашими же умелыми руками в HTML странице будет скрипт "плавно меняющий" размер флешки, постоянно). Так что если вы имели в виду событие потянул-отпустил, то, в общем случае, "отпустил" может никогда не наступить, и предполагать, что оно обязательно наступит, следовательно, не логично. Логично по таймеру или в каждом новом кадре проверять не изменились ли с последнего раза размеры сцены (т.е. не произошло ли >0 событий resize), и, если да, то отрисовать сцену по-новой.

igrik 18.08.2011 14:47

Цитата:

Сообщение от wvxvw (Сообщение 1022869)
Событие resize случается с определенной дискретностью во времени. Т.е. если вы растягиваете медленно окно с флешкой, то оно будет случаться, в зависимости от плеера, оси, браузера и т.п. с каким-то интервалом. Интервал вам заранее не известен. Закончится ли изменение размеров - вам тоже не известно (может быть так, что и не закончится вообще, если вашими же умелыми руками в HTML странице будет скрипт "плавно меняющий" размер флешки, постоянно). Так что если вы имели в виду событие потянул-отпустил, то, в общем случае, "отпустил" может никогда не наступить, и предполагать, что оно обязательно наступит, следовательно, не логично. Логично по таймеру или в каждом новом кадре проверять не изменились ли с последнего раза размеры сцены (т.е. не произошло ли >0 событий resize), и, если да, то отрисовать сцену по-новой.

Спасибо за ответ

trng 18.08.2011 16:35

Событие Event.RESIZE возникает ПОСЛЕ того, как размер stage изменился.
Далее возможны 2 варианта:
1. Если отключены всевозможные настройки типа "Scale content with stage", то ПОСЛЕ ресайза stage (в момент вызова назначенного resizeHandler) ни один объект еще не изменил размер. Соответственно с ними можно делать все что угодно - программно (в теле resizeHandler).
2. Если всевозможные настройки типа "Scale content with stage" включены, то на момент вызова resizeHandler (по событию Event.RESIZE) все объекты с включенными опциями Scale уже будут изменены в размере. Причем для них событие RESIZE может и не возникнуть, так как флеш в этом случае "думает", что пользователю нужна "экранная лупа", и он (флеш) отресайзит объекты без вашего участия.


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

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