![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
|
Сразу к сути, вот код во флексовом приложении, оставил только то что показалось важным, этот код создает SWFLoader, и автолоадом подгружает приложение на as2, в переменных запроса идут инициализационные переменные для подгружаемого приложения.
private function doLoadComponent( component:ComponentBean, params:Object ) : void { component.setIsLoading( true ); loader = new SWFLoader(); loader_target = target; target.addChild( loader ); component.setLevel( loader ); if(component.getName()!=loaded_name) hideComponent( component.getName() ); var users_bean:String = ""; for each (var i:TableUserBean in users) users_bean += i.serializeForHttpReq(); var request:URLRequest = new URLRequest( component.getPath() + component.getName() +'.swf?v=' + getTimer() + "&SFServer="+server+"&SFSPort="+String(port)+"&tempLog="+login+"&tempPas="+pass+"&gameName="+component.getName()+ "&table_room_id="+table_room_id+"&table_id="+table_id+"&place="+place+"&users="+users_bean); if ( params ) request.data = params; loader.addEventListener( Event.COMPLETE, onComponentLoaded ); loader.addEventListener( Event.UNLOAD, onUnloadComponent ); loader.source = request.url; } } private function onUnloadComponent( event:* ) : void { trace("UNLOAD"); } public function exitFromGame():void{ loader.unloadAndStop(true); } static private var temp = 1; private function set_init_variables() { trace("***Мы здесь были " + temp + " раз"); temp++; } ***Мы здесь были 1 раз //все переменные появились в руте загруженого свф, как им и было сказано UNLOAD // это анлоад зафиксирован во флексовом приложении ***Мы здесь были 2 раз //переменные в руте не определены, хотя запрос отработал, мы зашли в приложение. Пока единственным объяснением я для себя вижу пятницу и опухший мозг к конецу недели, если у кого нибудь есть более здравые мысли - поделитесь. Премного благодарен ![]() Да, забыл уточнить exitFromGame() вызывается по нажатии кнопки через локал конекшн в ас2 приложении. Последний раз редактировалось incorp; 30.10.2009 в 21:34. |
|
|||||
|
Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
|
на стороне флексового приложения я пробовал закрыть локал коннекшн, использовал команду close(). никакой разницы в результате не было, тем более что срабавтывает событие Event.UNLOAD - значит по идее выгрузка как бы произошла.
|
|
|||||
|
Modus ponens
|
Не, событие вообще ни о чем не говорит. Когда Loader вызывает unload() он просто удаляет чилда из списка отображения, но если сообщение не закрыто "до конца", то чилд так и зависнет в памяти.
Но, есть еще и такое подозрение, что SWFLoader может отыскивать таких "потеряных детей", и потом их загружать повторно, если они вдруг обнаружаться после выгрузки. Я в его код не смотрел, но например загрузчик модулей так работает.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
|
Да, это похоже на правду, я вобщем тоже думал в этом направлении. Но как же с этим бороться, хотя бы теоретически? я так понимаю команду "абсолютно полный анлоад" я вряд ли найду
![]() |
|
|||||
|
Modus ponens
|
Ну так только общие пожелания - поищите, может где-то в AS3 осталась необнуленная ссылка / неубитый слушатель привязаный к этому ребенку... Но вообще, иногда бывает впринципе невозможно выгрузить чужую флешку... особенное если там какие-нибудь setInterval'ы крутятся, тот же ЛК и тому подобные...
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
|
ок, спасибо, будем искать..
|
![]() |
![]() |
Часовой пояс GMT +4, время: 01:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|