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

AlexCooper 09.02.2012 16:02

Быстрый перезапуск приложения
 
Здравствуйте. Подскажите пожалуйста.
Есть приложение, начальные данные, библиотечные символы, что задаётся и пользователем после чего производяться вычисления и визуализация, подскажите код который сможет буквально в один клик вернуть все данные в исходные положения (можно без учёта пользовательских настроек). Очень-грубо говоря перемомать всё на 1-й кадр.

GBee 09.02.2012 16:17

Код AS3:

currentData = new Data();


fish_r 09.02.2012 16:23

Если я правильно понимаю ситуацию, то удалить всё со сцены, и заново запустить init() документ-класса. Обычно такая возможность закладывается на этапе проектирования...

AlexCooper 09.02.2012 16:42

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

Inet_PC 09.02.2012 16:45

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

AlexCooper 09.02.2012 16:47

Есть может какой-то недокументированный метод который позволяет перезапустить приложение. На сколько понимаю пока только один вариант, отследить все слушатели, удалить их и запустить родительский init

Добавлено через 30 секунд
Система не браузерная, визуализация будет только в плеере. Возможно даже с встроенным флеш-плеером (ехе)

fish_r 09.02.2012 17:21

Цитата:

Сообщение от AlexCooper (Сообщение 1061871)
Есть может какой-то недокументированный метод который позволяет перезапустить приложение. На сколько понимаю пока только один вариант, отследить все слушатели, удалить их и запустить родительский init

Возможно и не нужно отслеживать слушатели и пр. ссылки, т.к. при переинициализации ссылки обновятся и "старые объекты" останутся без ссылок, на самом верхнем уровне. Но хорошо бы отследить по профайлеру удаление )

Inet_PC 09.02.2012 17:28

В общем Вам придется (если это действительно нужно) делать все ручками. Никакой недокументированной функции нет.

silin 09.02.2012 17:49

как вариант: загрузить себя же в лоадер, добавить loader.content к stage, а себя удалить
в небольшом тесте работает, но насколько оно надежно трудно сказать
Код AS3:

private function reset_click(e:Event):void 
{
        var loader:Loader = new Loader();
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete);
        loader.loadBytes(this.loaderInfo.bytes);
}
 
private function loader_complete(e:Event):void
{
        stage.addChild(e.target.content);
        stage.removeChild(this);
}

Добавлено через 7 минут
а может лучше не хозяйничать в stage, а сразу держать флешку в лоадере в какой-нибудь обертке, а при надобности перезагружать из loaderInfo.bytes

Inet_PC 09.02.2012 18:19

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


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

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