Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.02.2007, 17:30
Pablo4d вне форума Посмотреть профиль Отправить личное сообщение для Pablo4d Посетить домашнюю страницу Pablo4d Найти все сообщения от Pablo4d
  № 1  
Ответить с цитированием
Pablo4d
 
Аватар для Pablo4d

Регистрация: Feb 2006
Сообщений: 30
Отправить сообщение для Pablo4d с помощью ICQ
По умолчанию непонятки с ассоциативным массивом

Делаю так:
Код:
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
		}
Но в массив не добавляется при
Код:
aForms[__form.name]=__form;

Старый 10.02.2007, 04:48
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 2  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Ничего не понял, но на всякий случай сообщу, что в таких случаях стоит использовать Dicrionary а не Array.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 12.02.2007, 12:30
__i вне форума Посмотреть профиль Отправить личное сообщение для __i Найти все сообщения от __i
  № 3  
Ответить с цитированием
__i
 
Аватар для __i

Регистрация: Jan 2004
Адрес: Украина, Харьков
Сообщений: 1,524
Отправить сообщение для __i с помощью ICQ
я допустим переодически забываю написать myVar = new Object() или
myAr = new Array(). В твоем случае я тоже не вижу таких действий.

Dictionary
__________________
33 коровы

Старый 13.02.2007, 19:25
Флэш Потрошитель вне форума Посмотреть профиль Отправить личное сообщение для Флэш Потрошитель Посетить домашнюю страницу Флэш Потрошитель Найти все сообщения от Флэш Потрошитель
  № 4  
Ответить с цитированием
Флэш Потрошитель
 
Аватар для Флэш Потрошитель

Регистрация: Sep 2002
Адрес: Харьков
Сообщений: 27
Отправить сообщение для Флэш Потрошитель с помощью ICQ
Цитата:
Сообщение от Pablo4d
Но в массив не добавляется при
Код:
aForms[__form.name]=__form;
Интересно, а как именно ты определяешь, добавляется в массив значение или нет?

Например, если ты пытаешься использовать для этого свойство массива length, то ты и не увидишь никакого результата -- у ассоциативных массивов оно не поддерживается.
__________________
//Фотрошитель

Старый 13.02.2007, 19:43
Pablo4d вне форума Посмотреть профиль Отправить личное сообщение для Pablo4d Посетить домашнюю страницу Pablo4d Найти все сообщения от Pablo4d
  № 5  
Ответить с цитированием
Pablo4d
 
Аватар для Pablo4d

Регистрация: Feb 2006
Сообщений: 30
Отправить сообщение для Pablo4d с помощью ICQ
Цитата:
Сообщение от Флэш Потрошитель
Интересно, а как именно ты определяешь, добавляется в массив значение или нет?
Дебаггером смотрю

Вот конечный вариант
Код:
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
		}
		
	}
}
Это текущий вариант если заменить
Код:
private var aForms:Array;
на
Код:
private var aForms:Dictionary;
то уже все будет хорошо?

Старый 13.02.2007, 23:45
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 6  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Нет, просто если тебе нужен ассоциативный массив, более логично использовать Dictionary который легче, и подерживает слабую связку, в отличии от массива.

А вообще где ты инициализируешь массив?
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 14.02.2007, 14:57
Pablo4d вне форума Посмотреть профиль Отправить личное сообщение для Pablo4d Посетить домашнюю страницу Pablo4d Найти все сообщения от Pablo4d
  № 7  
Ответить с цитированием
Pablo4d
 
Аватар для Pablo4d

Регистрация: Feb 2006
Сообщений: 30
Отправить сообщение для Pablo4d с помощью ICQ
Это же синглетнон. Инициализация происходит по мере надобности - а то чнее просто идет добавление инстанса панели, когда она открывается и она не может повторно открыться пока существует хоть один инстанс такого же класса - ну типа как например панель Settings в приложениях (ее нельзя открыть два раза сразу)

Старый 17.02.2007, 00:53
Denis.Oleynik вне форума Посмотреть профиль Отправить личное сообщение для Denis.Oleynik Посетить домашнюю страницу Denis.Oleynik Найти все сообщения от Denis.Oleynik
  № 8  
Ответить с цитированием
Denis.Oleynik

Регистрация: Feb 2007
Сообщений: 3
Отправить сообщение для Denis.Oleynik с помощью ICQ Отправить сообщение для Denis.Oleynik с помощью Yahoo Отправить сообщение для Denis.Oleynik с помощью Skype™
Похоже, что у тебя просто ошибка в коде, 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);
		}
обрати внимание на __form.formname, есть ли тут значение.
если хочешь взять имя класса используй getQualifiedClassName, хотя ты запросто можешь использовать в качестве ключа сам __form:Class, только в этом случае замени Array на Dictionary.
__________________
blog.flexcoders.ru


Последний раз редактировалось Denis.Oleynik; 17.02.2007 в 16:37.
Старый 19.02.2007, 15:03
Pablo4d вне форума Посмотреть профиль Отправить личное сообщение для Pablo4d Посетить домашнюю страницу Pablo4d Найти все сообщения от Pablo4d
  № 9  
Ответить с цитированием
Pablo4d
 
Аватар для Pablo4d

Регистрация: Feb 2006
Сообщений: 30
Отправить сообщение для Pablo4d с помощью ICQ
все ясно - спасибо !

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:31.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.