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

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

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

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Т.е. несмотря на то, что init() не возвращает значение, и поэтому программе не нужно дожидаться результатов вызова, инициализация не закончится до тех пор пока не отработают все вызовы всех методов в инициализаторах всех нижележащих классах? Да. Это несколько меняет моё представление о последовательности работы приложения.

Старый 23.12.2011, 17:58
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 22  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS3:
package
{
	import flash.display.Sprite;
 
	public class Main extends Sprite
	{
		public var test:Test
 
		public function Main():void
		{
			test = new Test(this);
		}
	}
}
 
////
class Test
{
	public function Test(owner:Main)
	{
		trace("owner.test : " + owner.test); // owner.test : null
	}
}
ну да уже выяснили, но пусть будет как минимальный пример сабжа

Старый 23.12.2011, 18:07
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 23  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Т.е. несмотря на то, что init() не возвращает значение, и поэтому программе не нужно дожидаться результатов вызова, инициализация не закончится до тех пор пока не отработают все вызовы всех методов в инициализаторах всех нижележащих классах?
Да.
«Чудеса синхронного исполнения» было бы уместнее в названии, кстати.

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
А хотите еще одну интересную штуку? =) Вот смотрите:
Код AS3:
package {
 
    public class Singleton {
 
        // вот так делается статический конструктор
        // он вызывается при первом обращении к классу
        {
            trace("static constructor, class is: ", Singleton); // все ок, класс есть
        }
 
        public static const instance = new Singleton(); // null в трейсе, объект создан
 
        public function Singleton() {
 
            trace(Singleton); // трейсим именно класс, а не экземпляр, получаем null
 
        }
 
    }
 
}
То есть алгоритм такой: сначала инициализируются статические поля класса, затем уже сам класс (статический конструктор), и только после этого все остальное. Adobe style. То есть статический конструктор (который по идее должен инициализировать сам класс) в итоге может выполниться после того, как создан первый экземпляр этого класса.
И мы получаем вот такую картину: сначала создаем объект несуществующего класса, потом этот класс инициализируем в рантайме, а потом, получается назначаем этот класс нужным объектам. Ну или я не знаю как еще это можно объяснить =)

(с) Smithy
__________________
...вселенская грусть

Старый 23.12.2011, 18:25
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 25  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
глум, там что-то другое:
Код AS3:
package
{
	public class Singleton
	{
		{
			trace("Singleton::{} -> Singleton: " + Singleton);
			new Singleton(Singleton);
		}
 
		public static const instance : Singleton;
 
		public function Singleton(classRef:Class=null)
		{
			trace("Singleton::ctor() -> Singleton: " + Singleton);
			trace("Singleton::ctor() -> classRef: " + classRef);
		}
	}
}
Цитата:
Singleton::{} -> Singleton: [class Singleton]
Singleton::ctor() -> Singleton: null
Singleton::ctor() -> classRef: [class Singleton]

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

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Цитата:
Сообщение от fish_r Посмотреть сообщение
1. Вьюер инициализирует контролл, сохраняет на него ссылку.
Опа! Почему входной точкой является view, а не controller?
Опа! У флешеров оказывается где-то есть набор правил (кто кого должен инициализировать), выгравированных на скрижалях, которые ни в коем разе нельзя нарушать

Старый 25.12.2011, 00:26
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 27  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Вьюер инициализирует контролл
Контролл — это какой-то специфичный вьювер, вроде button, checkbox и прочее подобное из разряда UI Controls?
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 25.12.2011, 02:49
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 28  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Цитата:
Сообщение от dimarik Посмотреть сообщение
Контролл — это какой-то специфичный вьювер, вроде button, checkbox и прочее подобное из разряда UI Controls?
Нет, конечно. Но, просто, пока не придумал для себя лучшего варианта инициализации триады, и этот не камильфо, согласен.

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

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

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


 


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


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