PDA

Просмотр полной версии : [AS3]Не изменяется переменная


eXplozive
10.10.2006, 13:21
Добрый день вот есть такой код


<mx:Script>
<![CDATA[
import components.smi;
import mx.managers.PopUpManager;
import mx.core.IFlexDisplayObject;
private var login_open:String = "close";
private function showLogin():void {
if(login_open != "open"){
var login_open:String = "open";

var helpWindow:IFlexDisplayObject =
PopUpManager.createPopUp(this, components.smi, false);
}
}
]]>
</mx:Script>


Насколько я понимаю то переменная login_open после вызова функции showLogin() должна перейти в состояние "open" и при повторной попытке вызова этой функции код:

var helpWindow:IFlexDisplayObject =
PopUpManager.createPopUp(this, components.smi, false);


выполнятся не должен.

Но у меня такой способ не работает... Обясните пожалуйста в чем проблема...

etc
10.10.2006, 13:38
var login_open:String = "open";
Ты замещаешь внутри метода showLogin приватную переменную login_open своей локальной login_open.
Зачем?

<mx:Script>
<![CDATA[
import components.smi;
import mx.managers.PopUpManager;
import mx.core.IFlexDisplayObject;

private var login_open:String = "close";

private function showLogin():void {
if(this.login_open != "open"){
this.login_open = "open";
var helpWindow:IFlexDisplayObject = PopUpManager.createPopUp(this, components.smi, false);
}
}
]]>
</mx:Script>

eXplozive
10.10.2006, 14:05
а, врубило... спасибо...

но у меня компонент который я вызываю (components.smi) - базируется на компоненте TitleWindow... в нем есть код который его закрывает:


<mx:Script>
import mx.managers.PopUpManager;
private function removeMe():void {
PopUpManager.removePopUp(this);
}
</mx:Script>


еще нужно чтобы при закрытии, переменной "login_open" назначалось значение "close". Как мне передать в главный код эту переменную ?

etc
10.10.2006, 14:49
Послать событие, например…

Nirth
10.10.2006, 14:51
посылать даже не надо, просто подписатся на событие закрытия\удаления из дисплей листа, компонента.

eXplozive
10.10.2006, 14:58
Дело в том что я пока еще не совсем разобрался с этим , можно хоть небольшой примерчик, или хотябы где поискать в хелпе

etc
10.10.2006, 15:07
Ну я имел ввиду подписаться на close =)
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp()">
<mx:Script>
<![CDATA[
import mx.containers.TitleWindow;
import mx.managers.PopUpManager;
import mx.core.IFlexDisplayObject;
import view.TWindow;

private var popup:IFlexDisplayObject;

private function initApp():void {
this.popup = PopUpManager.createPopUp(this,TWindow);
this.popup.addEventListener("close",this.onWindowClose);
}

private function onWindowClose(e:Event):void {
PopUpManager.removePopUp(this.popup);
trace('Window Closed');
}

]]>
</mx:Script>
</mx:Application>
и (просто так, для понимания)
package view
{
import mx.containers.TitleWindow;

public class TWindow extends TitleWindow
{
public function TWindow() {
this.width = 100;
this.height = 100;
this.showCloseButton = true;
}
}
}