![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2012
Сообщений: 112
|
почему не срабатывает trace?
package mvc { import flash.text.TextField; import flash.events.EventDispatcher; import flash.events.Event; import flash.display.Stage; public class View extends EventDispatcher { private var stage:Stage; public function View() { if(!stage){ addEventListener(Event.ADDED_TO_STAGE, init); } } private function init(e:Event):void { trace("ss"); } } } |
|
|||||
|
Регистрация: Jul 2012
Сообщений: 112
|
а как определить тогда,что сцена имеет значение не null?
|
|
|||||
|
Так оно у вас по умолчанию null. Но значение никогда не "появится", следовательно слушатель не сработает.
__________________
местонахождение |
|
|||||
|
сделайте extend Sprite, и уберите знак восклицания в условии
__________________
adobe AS3 manual |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
У Вас объект не дисплейный. Он никогда не будет добавлен в Список отображения ("на стейдж"). Цитата:
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 11.07.2012 в 00:46. |
|
|||||
|
Регистрация: Jul 2012
Сообщений: 112
|
Блин, но а как мне из класса создать элемент
Вот я пытаюсь, но мне понятное дело выдает ошибку package mvc { import flash.text.TextField; import flash.events.EventDispatcher; import flash.events.Event; import flash.display.Stage; public class View extends EventDispatcher { private var numbSquare:Number; private var _model:Model; private var stage:Stage; public function View() { if(!stage){ addEventListener(Event.ADDED_TO_STAGE, init); } } private function init(e:Event):void { trace("ss"); } public function set model(m:Model):void { _model = m; _model.addEventListener(Model.MODEL_CHANGED, update); } private function update(e:Event):void { numbSquare = Number(_model.numbSquare); for (var i:int = 0; i < numbSquare; i++) { trace(i); var square:Square = new Square(); stage.addChild(square) } } public function get model():Model { return _model; } } } import mvc.Model; import mvc.View; import flash.events.Event; var model:Model = new Model(); var view:View = new View(); view.model = model; model.load("xml/settings.xml"); TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null". at mvc::View/update() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mvc::Model/setSquare() at mvc::Model/xmlLoaded() at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at flash.net::URLLoader/onComplete() Последний раз редактировалось iNils; 11.07.2012 в 01:00. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Jul 2012
Сообщений: 112
|
Да нет, это не подойдет: он уже наследуется от EventDispatcher и это не DocumentClass чтоб его от Sprite наследовать
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Вам бы почитать что-нибудь.. Хотя бы справку..
Вам объяснили уже всё: почему нет события, что нужно сделать и почему именно это. Вы ждете событие "меня добавили на стейдж" от объекта, который по природе своей никогда не сможет быть добавлен на стейдж — для этого он должен наследовать DisplayObject. EventDispatcher не является наследником DisplayObject, и никогда не будет добавлен на стейдж (в список отображения). Соответственно событие ADDED_TO_STAGE он никогда не продиспатчит (разве что кто-нибудь заставит его извне это сделать))))
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|