Показать сообщение отдельно
Старый 07.05.2011, 18:52
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 6  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Если бы в AS были структуры, можно было бы сделать статическую структуру для каждой группы, со всеми нужными значениями. А без этого не знаю, как написать. Вложенных классов нет. Можно было бы сделать пакет с настройками и создавать по отдельному классу для каждой группы, но это чересчур. Я хочу, чтобы всё было в одном файле, с intelliSense, все дела... Есть какое-то простое решение?
Ну раз структура нужна статическая, какая разница будет она классом или структорой? И чем таким объявление класса в AS3 тяжелее объявления структуры в C++?
Код AS3:
package  
{
	public class Preferences 
	{
		public static const preferencesGroup1:ReferenceGroup1 = new ReferenceGroup1();
 
		public static const preferencesGroup1:ReferenceGroup2 = new ReferenceGroup2();
	}
 
}
 
class ReferenceGroup1
{
	public var color:uint;
 
	public var indent:int;
}
 
class ReferenceGroup2
{
	public var color:uint;
 
	public var indent:int;
}
Цитата:
Настройки какой-то панельки, например. А группа уже должна содержать все нужные значения - цвет панельки, размер и т.д.
Чем панельки настраивать и плодить кучу копипасты по всему приложению с кодом их создания, может оказаться проще влепить статичные фабрики этих панелек (подход ни разу не правильный - все оказывается завязано на фабрику, но компонентам, которые впринципе нельзя использовать вне приложения можно разрешить пользоваться этой фабрикой):

Код AS3:
package  
{
	public class PanelFactory
	{
		public static function newDefaultPanel():PanelBase
                {
                        var panel:CustomizedPanel = new CustomizedPanel();
                        panel.bgColor = 0xff00ff;
                        panel.borderColor = 0xff0000;
                        ...
                        return panel;
                 }
 
		public static function newDialogPanel():PanelBase
                {
                        var panel:CustomizedPanel = new CustomizedPanel();
                        panel.bgColor = 0xff0000;
                        ...
                        return panel;
                 }
 
                 public static function newButifulPanel():PanelBase
                {
                        var panel:ExtendedCustomizedPanel = new ExtendedCustomizedPanel();
                        panel.bgColor = 0xffffff;
                        ...
                        return panel;
                 }
	}
 
}


Последний раз редактировалось expl; 07.05.2011 в 19:00.