Форум 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=144902)

negin 23.09.2010 20:09

Закрытие Браузера
 
Возможно ли прослушать из флешки события закрытия окна страницы, переход на другую страницу или даже самого браузера??????
Не используя конечно JS.

BlooDHounD 23.09.2010 20:25

нет. низя.

Crenth 24.09.2010 04:23

а зачем это нужно ?

КорДум 24.09.2010 08:27

Чтобы сделать пользователю жизнь еще больше трудной? А то неактивные флешки на страницах уже научились просто так сами добавлять новое окно во вкладках браузера. И ведь стандартные средства оперы не всегда и блокируют такое.

Хомяк 24.09.2010 09:26

У меня проблема созвучная где то этой теме. В приложение подгружаются мувики в swf и поочередно показываются на сцене. В IDE, да в общем и в браузере все работает нормально, однако при свертывании или переходе на другую вкладку флешка подвисает на одном и том же мувике, единственное отличие его от других в том, что он однофреймовый (или однокадровый, как хотите). Трейсы показывают, что во время выдвижения его на сцену возникают странные паузы, ну сами по себе они не странные а странно то, что его выдвижение, которое занимает примерно 1-1.5 сек заканчивается, в результате уже после демонстрации мувиклипа (и его сигнала контроллеру о том, что он "отбился") которая занимает около 7-ми секунд. В результате возникает "накладка", то есть два мувика (а окно браузера либо свернуто, либо на другой вкладке) находятся одновременно на сцене, короче в результате сцена полностью очищается - окно пустое. Бился с этой штукой сутки, закончилось тем, что написал "костыль", который это дело "устаканивает". Сам процесс поправить так и не смог, не понимаю - в чем дело.

mr.oizo 24.09.2010 17:57

2КорДум: А пример такой флешки можно? Мне для собственного интереса

КорДум 24.09.2010 18:02

mr.oizo, нет, не покажу, ибо в том месте, где она появляется, находится динамический ротатор.

Crenth 24.09.2010 23:36

negin, и все же, для каких целей вам это ?

мне тоже интересно.
я обратил внимание, что когда закрываешь браузер или вкладку или переходишь на другую страницу, то ФП корректно закрывает netconnection.
Поэтому есть надежда, что все таки некоторую часть кода флешка чисто теоретически может выполнить до того, как будет убита

expl 25.09.2010 00:01

Цитата:

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

Присоединяюсь к вопросу, и есть ли надежный способ сделать это с помощью js (давно пытался, не получалось более чем для одного бравзера)?

Crenth 25.09.2010 06:02

Цитата:

Сообщение от expl (Сообщение 938352)
Например для отправки на сервер действий пользователя, накомленных за игровую сессию, чтобы не отсылать их при каждом клике,
или для сохранения настроек пользователя, чтобы на каждое изменение настройки запрос не слать.

Присоединяюсь к вопросу, и есть ли надежный способ сделать это с помощью js (давно пытался, не получалось более чем для одного бравзера)?

Уточняю, потому как если это нужно чтобы на сервере предпринять какие-то действия при закрытии/переходе, то это не проблема.
Но если успеть что-то делать на клиенте - проблема, которую, например, я для себя еще не решил.

Хомяк 28.09.2010 06:28

Цитата:

Сообщение от expl (Сообщение 938352)
...Присоединяюсь к вопросу, и есть ли надежный способ сделать это с помощью js (давно пытался, не получалось более чем для одного бравзера)?

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

А есть ли средства flash что бы отследить свертывание окна браузера или переключения на другую вкладку?

andrew911 28.09.2010 12:11

Цитата:

Сообщение от Хомяк (Сообщение 938997)
А есть ли средства flash что бы отследить свертывание окна браузера или переключения на другую вкладку?

Таких средств нет, никакие события не диспатчатся.

Были похожие грабли - вам надо привязываться не к кадрам, а к времени.
В 10.1 FP при смене/сворачивании вкладок ФПС понижается до 4х ( косвенно можно например так отследить), поэтому ваша анимация длится дольше.

gloomyBrain 28.09.2010 12:31

Цитата:

Таких средств нет, никакие события не диспатчатся.
А как же Event.ACTIVATE и Event.DEACTIVATE?

andrew911 28.09.2010 12:46

Цитата:

Сообщение от gloomyBrain (Сообщение 939047)
А как же Event.ACTIVATE и Event.DEACTIVATE?

А если у человека FP ниже 10.1, а мы будем считать, что при потере фокуса плеер ушел в sleep mode?

И эти события отслеживают потерю фокуса, а это может быть просто перекрытие другим окном.

Note: No ActionScript event is dispatched when Flash Player enters or leaves sleep mode.

nldr 28.09.2010 12:50

Присоединяюсь к вопросу. Вот игра, которая в паузу уходит, например http://www.kongregate.com/games/rich...r/hello-worlds

andrew911 28.09.2010 13:07

Цитата:

Сообщение от nldr (Сообщение 939055)
Присоединяюсь к вопросу. Вот игра, которая в паузу уходит, например http://www.kongregate.com/games/rich...r/hello-worlds

Предложили же отслеживать Event.ACTIVATE и Event.DEACTIVATE

Хомяк 28.09.2010 13:20

Похожая проблема была у меня. Попробую описать.
Был один таймер, время его работы, примерно 1,5 сек, назовем его "Короткий таймер". И был другой таймер, его время работы 12 сек, пусть будет "Длинный таймер". Порядок их работы следующий:

1. Включается слушатель Короткого таймера.
2. Включается Длинный таймер.
3. Включается Короткий таймер.
4. Событие - Короткий таймер. По окончанию работы Короткого таймера включается слушатель Длинного.
5. Событие - Длинный таймер. Отключается слушатель Длинного таймера.
Дальше все это работает циклично по пунктам 2-5...

Так вот при сворачивании окна, или переключении на другую вкладку работа Короткого таймера резко замедлялась, судя по getTimer() на его работу уходило 18 сек. а не 1,5. А Длинный таймер работал примерно с такой же продолжительностью как и при открытом окне, если скорость и отличалась то незначительно. А вторая особенность была в том, что Слушатель Длинного таймера срабатывал, несмотря на то, что Короткий таймер не успевал его включить, ведь его работа стала продолжительней Длинного таймера. Слушатель Длинного таймера был отключен однозначно, проверял hasEventListener и willTriger, и тем не менее реагировал на событие окончания работы Длинного Таймера! Вот такая штука. Решилось это установкой в Слушателе инструкции if(hasEventListener)...
Баг это или не баг, незнаю, но покопав в этом направлении можно сделать модуль сигнализирующий о том, что пользователь свернул окно или перешел на другую вкладку. Ведь признака падения fps не достаточно, так как на сцене, к примеру, могут выполнятся ролики с разным fps.

gloomyBrain 28.09.2010 13:28

Цитата:

А если у человека FP ниже 10.1, а мы будем считать, что при потере фокуса плеер ушел в sleep mode?
Ну как вариант =)
А вообще можно еще через js и ExternalInterface попробовать - т.к. сворачивание браузера или переключение на другую вкладку есть события браузера, а не FP. Всякие там window.onBlur есть для этого

Цитата:

так как на сцене, к примеру, могут выполнятся ролики с разным fps.
Это, интересно, как?

andrew911 28.09.2010 14:05

Хомяк

Одного знания FPS конечно недостаточно, так как может быть падение фпс.
Поэтому советую отталкиваться от временных промежутков, а не от кадров.

Таймер не может замедлятся сам по себе, фпс падает до 4, но промежутки времени определяются также.

http://www.flashgamesclassroom.com/c...sed-animation/

Хомяк 28.09.2010 14:34

andrew9911 Вы правы, замедлялся он не сам по себе, это скорее процесс обработки графики построенный на таймерах, что бы упростить я назвал его Коротким таймером, возможно это было не очень правильно, но интересно не замедление само по себе. А то, что слушатель реагировал на событие будучи не активированным, более того, он сам знал, что он неактивен! Как вам это? "Привет! Я не активен. Н-н-на!!! Тебе событие!" :D. Нормально да?

А по поводу "onBlur"а - потому у нас все так криво и работает, что пытаемся прикрутить то что предназначено для другого к тому, что нам надо.:)

incoob 29.09.2010 23:47

КорДум: ну из флеша, по идее, вкладку браузера можно открыть с помощью
Код AS3:

ExternalInterface.call("open(\"http://google.com\")")

. Это если, конечно, ваш браузер разрешает всплывающие окна.

Хомяк: складываете мувики в очередь; как только мувик скрылся, показываете следующий. Никаких "накладок" у вас после этого быть не может.

Crenth: если вы выключили комп выдергиванием шнура из розетки, то флешка ничего корректно не завершит. А вот сервер будет знать, что флешка закончила работать, так как сокетное соединени с ней разорвется. А так как вся модель у вас хранится на сервере, то ничего страшного не произойдет.

expl: если пользователь делает что-то важное (что меняет модель), то на сервер слать сообщение придется.

Цитата:

Это, интересно, как?
Тоже очень интересно. А то я всегда думал, что на сцене все мувики проигрываются с одним фреймрейтом.

Crenth 30.09.2010 05:54

Цитата:

если вы выключили комп выдергиванием шнура из розетки, то флешка ничего корректно не завершит
это очевидно, хотя такие варианты в этом топике не рассматриваются


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

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