Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Очередь добавления в DOC (http://www.flasher.ru/forum/showthread.php?t=204271)

Babylon 25.10.2013 22:08

Экземпляр Main cам добавляется в список отображения stage!

silin 25.10.2013 22:23

Цитата:

Сообщение от Akopalipsis (Сообщение 1149914)
У меня тоже вызывает некое недоумение эта ситуация, ведь, как все говорят - мы добавляем обьекты в класс Main. И получается, что добавили ещё до его создания. я эту интригу обьяснил так - пусть майн ещё не создан, но мы и не добавляем не чего в майн, мы ведь тип режим ДОКом. И тогда само напрашивается, что ДОК тоже есть сразу.

такое ощущение, что вы сами стремитесь себя запутать :)
использовать(добавить) объект до завершения его создания логично нельзя, но почему нельзя добавить в него что-то в процессе создания ?
такая ситуация для всех дисплейобжектов, документ класс в этом смысле ничем не выделяется

Wolsh 25.10.2013 22:51

Цитата:

Чтобы добавить экземпляр Main его как минимум надо создать, и следовательно вызвать конструктор.
Ну, Вы создаете? Вызываете? Нет? Магия!

Babylon 25.10.2013 22:53

Оправдания приняты!

Wolsh 25.10.2013 23:00

Да просто в init() можно вставить trace(this), и получите честный [object Main].
Так что конструктор уже "как-то" отработал, хотя написанный в конструкторе трейс выведется после трейса в init().
Ну так магия?

"Чем внимательней смотришь, тем меньше видишь" (©Иллюзия обмана)

Babylon 25.10.2013 23:10

да я знаю, что выводится. Магия... Akopalipsis, вас захвалил. Лесть расслабляет.

Wolsh 25.10.2013 23:11

Ладно, попробую раскрыть трюк.
Просто Вы воспринимаете слово "конструктор" слишком буквально. Вы думаете что пока не выполнится весь код в функции, объект еще не создан.
Это не так. Прикол в том, что код в конструкторе вообще-то ничего не создает касательно объекта.
Все, что касается "состава" объекта как экземпляра класса, написано в теле класса. В конструкторе Вы можете что-то инициализировать из переменных (стоп, а откуда взялись переменные, если мы не писали в конструкторе "var... "? АГА! Так понятно?), запустить какие-то функции (стоп, а какие же функции экземпляра, если экземпляр то еще не создан? Объявленные в теле класса, АГА!)
Так что на момент выполнения кода в конструкторе объект уже полностью создан и выполняет только "первоначальную настройку".
После которой new его возвращает.
Можно рассматривать конструктор как одну из функций в теле класса (чем он и является), автоматически выполняемую сразу после создания объекта. Всё.

Akopalipsis 25.10.2013 23:23

И ещё в классе можно вызывать методы до вызова конструктора, если использовать статику.
Они почему то в первую очередь инициализируются.

Babylon 25.10.2013 23:25

И Вам спасибо за объяснения!

Dukobpa3 25.10.2013 23:28

Цитата:

Они почему то в первую очередь инициализируются.
Потому что статика в сигнатуре класса а не в объекте созданном.
т.е. статика "инициализируется" уже на этапе компиляции.

Добавлено через 30 секунд
И именно поэтому статика не наследуется и не оверрайдится.


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

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