incorp
30.10.2009, 21:32
Сразу к сути, вот код во флексовом приложении, оставил только то что показалось важным, этот код создает 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 приложении.
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 приложении.