Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Небольшой вопрос по событиям (http://www.flasher.ru/forum/showthread.php?t=213816)

zackscript 23.01.2017 16:56

Небольшой вопрос по событиям
 
Хотелось бы узнать для чего надо вызывать родительскую версию конструктора класса Event:
Код AS3:

super(type, bubbles, cancelable);

без данной строчки выдает:
Цитата:

Не удалось найти конструктор по умолчанию в базовом классе flash.events:Event.
вот пример:
Код AS3:

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 минуту
Для примера диспачил так:
Код AS3:

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")
                }
        }
}


faraday 23.01.2017 17:01

ну потому что у родительского класса, как и у любой фнкции есть обяз. параметры, которые наследник должен передать

zackscript 23.01.2017 17:11

А разве оно не автоматически вызывается (super()) ?
и да все таки явно вызывать надо, потому-что по умолчание параметр bubbles:Boolean = false
https://pp.vk.me/c837627/v837627723/...agdJWQAlX4.jpg

Добавлено через 4 минуты
Ну все равно у меня ни чего не прояснилась

Tails 23.01.2017 17:30

Вызов родительского конструктора должен быть полюбому. Если ты его не вызываешь сам, компилятор дописывает super() за тебя автоматически. Так-как тут конструктор Event имеет один обязательный параметр (type), то вызов должен быть явным, с передачей параметра.

zackscript 23.01.2017 17:43

Tails, и в правду ), я и не заметил это, спасибо.


Часовой пояс GMT +4, время: 21:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.