
20.09.2011, 22:13
|
|
Регистрация: Jul 2001
Адрес: Харьков
Сообщений: 102
|
В повторно загружаемом SWF инициализируются старые Flashvars
Объясняю ситуацию:
- Имеется приложение AS3, которое загружает в себя swf-файл загрузчик на AS2, который извлекает параметры из запроса и использует их для загрузки в себя некой AS2-игры. Игра написана давно, и ее требуется поддерживать. Реализован интерфейс коммуникации с основным приложением через ExternalInterface.
- Задача стоит этот лоадер загружать и выгружать, а потом - загружать снова - чтобы подтянуть другую игру.
- Чтобы он мог подтягивать разные игры, ему передаются параметры - гетовской строкой, чтобы потом он читал свои флешвары.
- Он читает флешвары исправно в первый раз таким образом: _root["myVar1"], _root["myVar2"]... После чего загружает нужную игру и все в порядке.
- Потом пользователь захочет закрыть одну игру и открыть вторую. При этом я как могу чищу и уничтожаю экземпляр класса, который служил для загрузки и отображения первой игры, создаю новый экземпляр и по той же схеме гружу в него ТОТ ЖЕ файл-лоадер, но с другими параметрами, ожидая что он их подхватит и будет использовать.
- В логе Charles я вижу, что запрос прошел правильный - с нужной GET-строкой
- Но когда я заглядываю в AS2 лоадер, вижу, что нужных параметров он не получил (очевидно, он вместо заргузки взял где-то закешированный уже проинициализированный объект).
Дальше два варианта: - Если при уничтожении предыдущего экземпляра-контейнера, я сделал unload ИЛИ unloadAndStop старому Loader-у, то новый AS2 файл НЕ ВИДИТ Flashvars вообще
- Если этого не делать, то он видит старые Flashvars
Никакими способами это преодолеть не удалось. Пробовал: - Хак по принудительному вызову Garbage Collector
- Передачу параметров через URLrequest.data (не находит)
- Удалял из загрузчика все лишнее, все листенеры и блокировал дальнейшую загрузку игры
Пока все тщетно. Не хочется пользоваться LocalConnection и ExternalInterface. Есть ли способ этого избежать?
Спасибо.
Последний раз редактировалось Stary; 20.09.2011 в 22:16.
|