![]() |
Запрет на запуск нескольких экземпляров клипа.
Как можно запретить многократный запуск одной и той же флешки? Пытался сделать через локал коннекшн, но не смог обойти получение данных самим клипом отправителем. Т.е. он сам себя вырубает.
|
SharedObject с прописанным localPath при создании. Запущенная флешка проверяет, если нет объекта - создает. если есть - читает счетчик. Перед выходом из последней флешки счетчик обнуляется
|
Так, как раз вчера заснул когда реализацию через шаредобжект начал обдумывать. НО! Если выход через созданную кнопку, то понятно как реализовать. А если плеер закрывается как виндоус приложение? Как отследить закрытие флешки?
Просто может видимо возникнуть ситуация, когда сохранится ненулевой счетчик. Тогда вообще запускаться перестанет. |
DarkLight, тебе MyXus расскажет, как работает SO, пока не закрыта первая флешка. А работает он так, что пока открыта эта флешка, в SO продолжают находиться старые данные, даже если делать flush.
Я бы сделал просто connect у LocalConnection, проверяя onStatus. Если connect не удался, то закрывать нафиг. |
Используйте какие-нибудь оболочки, для отлова закрытия.
Можно так же таймаут на шаредобжект, типа, если прошло 5 мин, то можно дубликат открывать. |
Цитата:
http://www.inils.ru/test/a.html И код Код:
var txt:TextField = this.createTextField("txt", 0, 10, 10, 200, 20); |
Ну, результат налицо же, каждая новая флешка начинает свой «путь» с нуля. Либо с того числа, которое сохранила последняя закрытая флешка. И flush тут тоже не сработает, он куда-то в temp сохраняет файл, несмотря ни на что.
|
А понял, я подумал, что внутри одного swf данные не меняются.
|
Код:
var txt:TextField = this.createTextField("txt", 0, 10, 10, 200, 20); |
DarkLight, речь не об этом шла.
первый swf Код:
var txt:TextField = this.createTextField ("txt", 0, 10, 10, 200, 20);Код:
var txt:TextField = this.createTextField ("txt", 0, 10, 10, 200, 20); |
http://dl1t.com/112.jpg
А если вынести из цикла создание объекта и убрать delete, то действительно каждый отдельно(http://dl1t.com/32.jpg). |
Так я не убираю delete. Но заметил особенность. Если запустить один и он добежит пусть то 8, то запустив второй в этот момент, он сразу выдаст 1008.
|
В общем и целом, работа с SO довольно странная.
|
У меня на 1ом скриншоте оба свф синхронно прибавляют 1001. Только секунд через 10 начинается асинхронность и сбрасывание до 0. При интервале между записями в секунду уже этого не происходит.
http://dl1t.com/Untitled-2.swf http://dl1t.com/Untitled-3.swf Насколько я понял, освобождение SO происходит не сразу после удаления экземпляра в AS |
Цитата:
Хотя в принципе код на включение прослушки канала можно отстрочить таймером... Как бы только время подобрать? Чтобы и запрос успел пройти, и пользователь четверной клик на эекзешнике не успел сделать. |
Нееет, насколько я помню, connect не сработает второй раз на то же имя.
Если работает, то можно проверить тогда send. Если send удался, то значит коннект уже кем-то открыт (т.е. со статусом все в порядке) и нам надо закрываться. |
Ну вот в том то и дело, что коннект надо и в самой первой флешке открывать. И её же сенд, она сама и получит.
|
Цитата:
connect держать может только одна. |
А что мешает сначала сделать send? Если не удался, значит коннекта нет и делаем коннект. Если удался, значит коннект уже открыт кем-то и мы должны закрываться.
|
Оказывается connect сам возвращает результат. Ну вообщем понятно, что true если соединение с каналом установлено и false, если нет. Таким образом написал код:
Код:
lc_in= new LocalConnection();Всем спасибо. |
| Часовой пояс GMT +4, время: 15:29. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.