![]() |
|
||||||||||
|
|||||
|
Делаю так:
public function openForm(__form:Class):void
{
if (isFormOpen(__form.name))
{
return;
}
var form:IFlexDisplayObject=PopUpManager.createPopUp(DisplayObject(Application.application),__form,false);
addForm(form);
}
public function addForm(__form:Object):Boolean
{
if (isFormOpen(__form.name))
{
return false;
}
aForms[__form.name]=__form;
return true;
}
public function removeForm(__form:Object):Boolean
{
if (isFormOpen(__form.name))
{
delete aForms[__form.name];
}
return false;
}
public function isFormOpen(__name:String):Boolean
{
if (aForms[__name]!=null)
{
return true;
}
return false
}
|
|
|||||
|
4AM Games
|
Ничего не понял, но на всякий случай сообщу, что в таких случаях стоит использовать Dicrionary а не Array.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Интересно, а как именно ты определяешь, добавляется в массив значение или нет?
Например, если ты пытаешься использовать для этого свойство массива length, то ты и не увидишь никакого результата -- у ассоциативных массивов оно не поддерживается.
__________________
//Фотрошитель |
|
|||||
|
Цитата:
Вот конечный вариант package control
{
import mx.managers.PopUpManager;
import mx.core.Application;
import mx.containers.TitleWindow;
import flash.display.DisplayObject;
import mx.core.IFlexDisplayObject;
public class SingleFormsController
{
private static var controller:SingleFormsController;
public static var EVENT_EVENT_CODES_FORM_CLOSE:String="EVENT_EVENT_CODES_FORM_CLOSE";
private var aForms:Array;
public static function getInstance():SingleFormsController
{
if (controller==null)
{
controller=new SingleFormsController();
}
return controller
}
public function SingleFormsController()
{
if (controller != null)
{
throw new Error("Only SingleFormsController can exist.");
}
aForms=new Array();
}
public function openForm(__form:Class):void
{
if (isFormOpen(__form.formname))
{
return;
}
var form:IFlexDisplayObject=PopUpManager.createPopUp(DisplayObject(Application.application),__form,false);
addForm(__form.formname,form);
}
public function addForm(__name:String,__form:Object):Boolean
{
if (isFormOpen(__name))
{
return false;
}
aForms[__name]=__form;
return true;
}
public function removeForm(__formname:String):Boolean
{
var form:IFlexDisplayObject=getFormByName(__formname)
if (form)
{
PopUpManager.removePopUp(form);
delete aForms[__formname];
}
return false;
}
private function getFormByName(__formname:String):IFlexDisplayObject
{
return aForms[__formname];
}
public function isFormOpen(__name:String):Boolean
{
if (aForms[__name]!=null)
{
return true;
}
return false
}
}
}
на то уже все будет хорошо? |
|
|||||
|
4AM Games
|
Нет, просто если тебе нужен ассоциативный массив, более логично использовать Dictionary который легче, и подерживает слабую связку, в отличии от массива.
А вообще где ты инициализируешь массив?
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^ |
|
|||||
|
Это же синглетнон. Инициализация происходит по мере надобности - а то чнее просто идет добавление инстанса панели, когда она открывается и она не может повторно открыться пока существует хоть один инстанс такого же класса - ну типа как например панель Settings в приложениях (ее нельзя открыть два раза сразу)
|
|
|||||
|
Похоже, что у тебя просто ошибка в коде, Array здесь не причем, т.к. он подходит для строковых ключей. Как я вижу, ошибка у тебя в
public function openForm(__form:Class):void
{
if (isFormOpen(__form.formname))
{
return;
}
var form:IFlexDisplayObject=PopUpManager.createPopUp(DisplayObject(Application.application),__form,false);
addForm(__form.formname,form);
}
если хочешь взять имя класса используй getQualifiedClassName, хотя ты запросто можешь использовать в качестве ключа сам __form:Class, только в этом случае замени Array на Dictionary.
__________________
blog.flexcoders.ru Последний раз редактировалось Denis.Oleynik; 17.02.2007 в 16:37. |
|
|||||
|
все ясно - спасибо !
|
![]() |
![]() |
Часовой пояс GMT +4, время: 08:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|