|
|
|||||
Небольшой вопрос по событиям
Хотелось бы узнать для чего надо вызывать родительскую версию конструктора класса Event:
без данной строчки выдает: Цитата:
package { import flash.events.Event; public class StartEvent extends Event { public static const START:String = "start"; public function StartEvent(type:String, bubbles:Boolean, cancelable:Boolean) { super(type, bubbles, cancelable); } public override function clone():Event { return new StartEvent(type, bubbles, cancelable); } } } Добавлено через 1 минуту Для примера диспачил так: package { import flash.display.Sprite; import flash.events.Event; import StartEvent public class Main extends Sprite { public function Main () { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } public function init (e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE , init); this.addEventListener(StartEvent.START, on_start) dispatchEvent(new StartEvent(StartEvent.START , true , false)) } public function on_start (e:StartEvent):void { trace("ok") } } } |
|
|||||
Регистрация: Apr 2009
Сообщений: 409
|
ну потому что у родительского класса, как и у любой фнкции есть обяз. параметры, которые наследник должен передать
|
|
|||||
А разве оно не автоматически вызывается (super()) ?
и да все таки явно вызывать надо, потому-что по умолчание параметр bubbles:Boolean = false Добавлено через 4 минуты Ну все равно у меня ни чего не прояснилась |
|
|||||
Вызов родительского конструктора должен быть полюбому. Если ты его не вызываешь сам, компилятор дописывает super() за тебя автоматически. Так-как тут конструктор Event имеет один обязательный параметр (type), то вызов должен быть явным, с передачей параметра.
__________________
Дети не должны знать о своих родителях |
|
|||||
Tails, и в правду ), я и не заметил это, спасибо.
|
Часовой пояс GMT +4, время: 04:09. |
|
« Предыдущая тема | Следующая тема » |
|
|