Показать сообщение отдельно
Старый 15.09.2015, 11:39
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 15  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
про stage тоже не совсем понятно, если stage - только один и нет другого stage (у объектов своего), то пока не вижу смысла обращаться к stage через объект (_object.stage) все объекты же, получается, принадлежат одному stage? только находятся в разных DisplayObjectContaineraх... но с этим, думаю, разберусь по мере практики...
Все верно. Стейдж — это окно флэш-плеера, если грубо. Оно одно. И все объекты отображаются в нем. Важно понять, что стейдж не является частью Вашей программы. Он, конечно, позволяет Вам сделать несколько настроек и согласен кое-что рассказать о себе через свойства, но не Вы его создаете и не Вы им управляете. Это пользователь с помощью оконного интерфейса может в любой момент изменить размер окна или просто закрыть плеер. Стейдж — это вся область отображения плеера, в котором показывается Ваше приложение. Приложение написано на ActionScript, стейдж — нет. И еще очень много классов — нет. Они только предоставляют интерфейс "в стиле" AS3, через который Вы можете их использовать в своем коде. Это относится ко всем дисплейным классам — TextField, Sprite, MovieClip и др. Все они "находятся" в плеере, и Вы никак не можете их "переписать", только дополнить ("расширить" – extends) при наследовании, создавая свои подклассы-наследники. Только они "умеют" отображаться. Создать свой собственный дисплейный класс "с нуля" невозможно в принципе — плеер просто не будет знать, как его отображать на экране. Stage — такой же дисплейный класс, но еще более закрытый, Вы не можете ни наследоваться от него, ни даже создать его экземпляр. Плеер сам создает единственный экземпляр при запуске, и сразу же создает и добавляет в него экземпляр документ-класса (мейн), то есть Ваше приложение. И стейдж, и мейн, являются контейнерами (DisplayObjectContainer – DOC), то есть такими дисплейными объектами, в которые можно добавлять другие дисплейные объекты (DisplayObject – DO). Не каждый DO является DOC. Например, в Shape и TextField нельзя добавить другие объекты.
У всех контейнеров есть так называемый СписокОтображения (Display List). Это не класс, это абстрактное понятие (физически реализованное чем-то вроде скрытого массива). Само понятие "добавить объект в контейнер" означает добавить объект в список отображения контейнера. Пока объект не добавлен ни в один список, он не будет отображаться на экране и [автоматически] взаимодействовать с другими объектами, которые отображаются. При добавлении одного контейнера в другой, его список включается в список старшего ("родителя" — parent). Если родитель сам никуда не добавлен, то и "ребенок" (child) тоже не будет отображаться. Чтобы объект появился на экране, он должен быть в списке отображения стейджа, то есть ВСЕ его старшие контейнеры должны в конечном итоге быть добавлены в мейн, который автоматически добавлен на стейдж. Представьте стейдж как пустое пространство, в котором находится огромный аквариум — мейн. В аквариуме могут лежать камни, и другие стеклянные банки, в которых камни или еще стеклянные баночки, в которых камни, и так [почти] до бесконечности. Если какую-то стеклянную банку вытащить, то будет изъято из аквариума и все ее содержимое. Оно больше не в аквариуме, не в списке отображения стейдж, хотя и остается в своей банке — в списке отображения своего контейнера. Просто контейнер больше не в списке отображения стейдж.
__________________
Reality.getBounds(this);