![]() |
|
||||||||||
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Вообще я очень удивлён, так как считал, что когда мы документ класс подписываем под ADDED_TO_STAGE,
то код в обработчике событий выполнится только после добавления Main на stage и как я считал ( наверное ошибочно ), что именно в этот момент, он добавится и DOC. Неужели Main добавляется в DOC только тогда, когда, что то добавится в Main? |
|
|||||
|
[+4 06.05.14]
|
Что за ахинея. С чего вы решили, что пока в мейник не добавлено ничего, его нет? Конечно же есть. Открытие окна ( при компиляции ) это и есть ваш мейн по сути. Мейн на стейдж добавляется автоматически, в случае если это не подгружаемая флешка. Посему в констуркторе основного мейна достаточно init() без всяких эддед ту стейдж и проверок
__________________
Марк Tween |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
in4core сейчас я расскажу Вам в чём дело.
От кода ниже я ожидал, что сначала в ДОК добавится Main, а уже потом Sprite. Но на деле наоборот. package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { private var _view:View; public function Main() { if (stage)init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(event:Event=null):void { removeEventListener(Event.ADDED_TO_STAGE, init); _view = new View(this); var sprite:Sprite = new Sprite(); _view.addedChild(sprite); } } } package { import flash.display.DisplayObject; import flash.display.DisplayObjectContainer; import flash.events.Event; public class View { private var _doc:DisplayObjectContainer; public function View(doc:DisplayObjectContainer) { _doc = doc; _doc.addEventListener(Event.ADDED, doc_addedHandler); } public function addedChild(child:DisplayObject):void { _doc.addChild(child as DisplayObject); } private function doc_addedHandler(event:Event):void { trace(event.target); } } } |
|
|||||
|
[+1 25.10.13]
[+4 18.03.14] |
Последний раз редактировалось Babylon; 25.10.2013 в 22:30. |
|
|||||
|
>>На момент создания _view - он уже на стейдже
не, на стейдж он попадет после того как конструктор отработает т.е. первый вызов от добавления спрайта, второй от добавления самого main package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { private var _view:View; public function Main() { _view = new View(this); var sprite:Sprite = new Sprite(); _view.addedChild(sprite); trace("consructor comleted"); } } } >>Надо заметить что main на стейдж не добавляется это почему ? |
|
|||||
|
[+1 25.10.13]
[+4 18.03.14] |
что значит добавляется main?
|
|
|||||
|
[+1 25.10.13]
[+4 18.03.14] |
спасибо за разъяснение
|
|
|||||
|
Цитата:
В конструкторе мы смотрим - стейдж есть (значит уже на стейдже) или нету. Если нету - то асинхронная подписка. В любом случае в ините мейн уже на стейдже, как бы там события не развивались до этого.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|