|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
|
изменение this, root и stage при создании экземпляра класса
в Main создаю экземпляр DO класса:
public class Main extends Sprite { private var _staticObjects:StaticObjects = new StaticObjects; public function Main() { addChild(_staticObjects); package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFormat; public class StaticObjects extends Sprite { private var _stageHeader:TextField = new TextField(); public function StaticObjects() { var tf:TextFormat = new TextFormat(); tf.align = "center"; tf.font = "Arial"; tf.size = 20; _stageHeader.text = "Прочитанный материал по ActionScript 3.0"; _stageHeader.textColor = 0xFFFFFF; _stageHeader.border = true; _stageHeader.borderColor = 0x8000FF; _stageHeader.setTextFormat(tf); _stageHeader.width = _stageHeader.textWidth+5; _stageHeader.height = 25; addChild(_stageHeader); trace (this.parent); //null trace (this.root); //null trace (stage); // null } } } я думал, что trace(this.parent) в классе StaticObjects будет тоже самое, что и _stageHeader.parent в классе Main (создаётся же объект в Main) Последний раз редактировалось nelco; 23.09.2015 в 20:52. |
|
|||||
Конструктор класса срабатывает при создании экземпляра этого класса. То-есть когда срабатывает конструктор, ваш экземпляр класса ещё не находится на сцене, от того его родитель, stage и root не имеют значений.
|
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
|
|
|||||
nelco, вот эта запись
моветон сразу по двум причинам: 1) Вызывать конструктор принято с добавлением скобок, даже если он не принимает никаких аргументов то есть а не 2) Не нужно создавать экземпляры вне конструктора Это конечно не повляет на работу, но вид кода портит. Такая запись в работе равнозначна созданию экземпляра в конструкторе или в другом методе То есть лучше писать так: п.с. Ну и название класса должно быть существительным в единственном числе |
|
|||||
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
эти ссылки появляются после добавления этого объекта в дисплей лист
public class Main extends Sprite { private var _staticObjects:StaticObjects = null;; public function Main() { _staticObjects = new StaticObjects(); addChild(_staticObjects); //только здесь станут доступны эти ссылки, и если вызвать какую-нибудь функцию в _staticObjects после этого , то там уже можно будет трейсить их _staticObjects.traceRef(); а в хэндлере - уже работать со stage package { import flash.display.Sprite; import flash.text.TextField; import flash.text.TextFormat; public class StaticObjects extends Sprite { private var _stageHeader:TextField = new TextField(); public function StaticObjects() { this.addEventListener(Event.ADDED_TO_STAGE, init); } public function init(event:Event):void{ this.removeEventListener(Event.ADDED_TO_STAGE, init); var tf:TextFormat = new TextFormat(); tf.align = "center"; tf.font = "Arial"; tf.size = 20; _stageHeader.text = "Прочитанный материал по ActionScript 3.0"; _stageHeader.textColor = 0xFFFFFF; _stageHeader.border = true; _stageHeader.borderColor = 0x8000FF; _stageHeader.setTextFormat(tf); _stageHeader.width = _stageHeader.textWidth+5; _stageHeader.height = 25; addChild(_stageHeader); trace (this.parent); //null trace (this.root); //null trace (stage); // null } } } |
|
|||||
Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
|
спасибо за ответы, понял...
я думал, что если trace() стоит после addChild() в конструкторе добавляемого класса, то к тому времени, как вызовется trace(), addChild() уже выполнится и объект будет в displayListe буду пробовать с Event.ADDED_TO_STAGE |
|
|||||
Цитата:
То есть не addChild(_stageHeader); trace (this.parent); //null trace (this.root); //null trace (stage); // null addChild(_stageHeader); trace (_stageHeader.parent); trace (_stageHeader.root); trace (_stageHeader.stage); Но это сработает при условии, что сам родительский контейнер добавлен в дисплей лист |
Часовой пояс GMT +4, время: 20:45. |
|
« Предыдущая тема | Следующая тема » |
|
|