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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.05.2011, 19:18
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 11  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Кстати да, ни разу не видел что кто-то иерархию в одном классе разводит - обычно по статическому классу на группу содют, если не хотят параметры мешать в одном классе.

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

Регистрация: Feb 2011
Сообщений: 42
Действительно, автокомплит работает. С new я тоже не прав.
Только у меня такую штуку в рантайме выкидывает:
TypeError: Error #1007: Попытка реализации в объекте, который не является конструктором.
at GalleryDraftPack::SHPreferences$cinit()
....

Код AS3:
public class SHPreferences
	{
		public static const thumbSwiper:ThumbSwiper = new ThumbSwiper();		
	}
}
class ThumbSwiper{
	public const THUMBS_DISTANCE:Number = 32/2,
		DEFAULT_BACKGROUND_COLOR:Number = 0x90808080;
	}
Сейчас может быть, разберусь.

Старый 07.05.2011, 19:21
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 13  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
@expl
попробовал еще раз - и автокомплит заработал =) Хотя, в идеале не должен.
Возможно, это последствия вчерашней пятницы...
__________________
...вселенская грусть

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

Регистрация: Feb 2011
Сообщений: 42
А, собственно, да, как он может создавать объект во время инициализации статических полей?
Неужели у Вас это компилируется?

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

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Да, толи вложенные классы в последнюю очередь инициализируются.
Но если очень хочется, то можно сделать так (работает):
Код AS3:
package com.mouseSupposes.bitmap
{
	public class Preferences 
	{
		public static var _preferencesGroup1:ReferenceGroup1;
		public static function get preferencesGroup1():ReferenceGroup1
		{
			return _preferencesGroup1 ||= new ReferenceGroup1();
		}
 
		public static var _preferencesGroup2:ReferenceGroup2;
		public static function get preferencesGroup2():ReferenceGroup2
		{
			return _preferencesGroup2 ||= new ReferenceGroup2();
		}
	}
 
}
 
class ReferenceGroup1
{
	public var color:uint = 0xffff00;
 
	public var indent:int;
}
 
class ReferenceGroup2
{
	public var color:uint;
 
	public var indent:int;
}

Старый 07.05.2011, 19:41
Sharkow вне форума Посмотреть профиль Отправить личное сообщение для Sharkow Найти все сообщения от Sharkow
  № 16  
Ответить с цитированием
Sharkow
 
Аватар для Sharkow

Регистрация: Feb 2011
Сообщений: 42
Синглтон-таки.. :]
Код AS3:
public static function get preferencesGroup1():ReferenceGroup1
	{
		return _preferencesGroup1 ||= new ReferenceGroup1();
	}
А здесь после первого вызова в _preferencesGroup1 присвоится new ReferenceGroup1(), и создаваться он больше не будет? Или просто вернет new ReferenceGroup1(), а _preferencesGroup1 останется тем, что есть?

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

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
не надо путать синглтон со ленивой инициализацией.
И если бы я написал так:
Код AS3:
public static var preferencesGroup1:ReferenceGroup1 = ReferenceGroup1.instance
Не прокатило бы по той же причине, что и в первом случае.
Хотя, оно, конечно "Хоть горшком называй, только в печку не суй"

Цитата:
А здесь после первого вызова в _preferencesGroup1 присвоится new ReferenceGroup1(), и создаваться он больше не будет? Или просто вернет new ReferenceGroup1(), а _preferencesGroup1 останется тем, что есть?
Вот по этому я и не использую такие конструкции в основных проектах - чтобы вопросы у коллег не появлялись (здесь что-то поленился).

Это аналог:
Код AS3:
if (_preferencesGroup1 == null)
{
    _preferencesGroup1 = new ReferenceGroup1();
}
return _preferencesGroup1;
Второй раз не создастся

Старый 07.05.2011, 19:59
Sharkow вне форума Посмотреть профиль Отправить личное сообщение для Sharkow Найти все сообщения от Sharkow
  № 18  
Ответить с цитированием
Sharkow
 
Аватар для Sharkow

Регистрация: Feb 2011
Сообщений: 42
Понял. Да, это всё-таки удобнее, наверно, чем пакет делать. Вот где структуры бы...

expl, большое спасибо!

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

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

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


 


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


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