Переопределение во Flash IDE - PullRequest
       20

Переопределение во Flash IDE

0 голосов
/ 01 сентября 2011

Я пытаюсь переопределить dispatchEvent (), но безуспешно во Flash IDE.Проверяя Adobe docs на методе, он должен быть просто:

override function name()

Как продемонстрировал Грант Скиннер , это обычно и легко выполняется:

override public function dispatchEvent(evt:Event):Boolean {
    // code here
}

И хотя тщательный поиск в Google будет повторять этот синтаксис, успешно используемый в файлах классов, это делается внутри кода временной шкалы, однако встроенная в Flash IDE невозможна.Первая проблема заключается в том, что при использовании public выдается ошибка 1114: The public attribute can only be used inside a package.

Это было очевидно, однако после удаления этого выполнялось следующее (в первом кадре нового файла .fla):

override function dispatchEvent(evt:Event):Boolean {
    trace(evt.type);
    return super.dispatchEvent(evt);
}

приводит к этой ошибке: 1024: Overriding a function that is not marked for override.

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

Чтобы было ясно, мы знаем, что файл класса будет работать, но это неуместная проблема.Как заставить override function dispatchEvent() работать в коде временной шкалы?

Ответы [ 3 ]

1 голос
/ 01 сентября 2011

Вы можете переопределить только методы класса расширяемого вами класса (базовый класс).Это следует правилам наследования.Когда вы расширяете класс, вы наследуете все его методы.Переопределение метода позволяет вам реструктурировать этот метод.Доступ к методу и его переопределение - это две разные вещи.

public class SomethingSomething extends Event{
  public function SomethingSomething ( ):void{
  }
  override public function dispatchEvent(evt:Event):Boolean {
    trace(evt.type);
    return super.dispatchEvent(evt);
  }

}
0 голосов
/ 15 мая 2013

1. следующий класс

    package{
        import flash.display.MovieClip
        public class myClass{
            public function myClass(){
                // constructor code
                trace("this is constructor")
                waitToOverride()//trace this is overrided code of waitToOverride
            }
            static function waitToOverride(){
                //wait to override
                trace("this is original code of waitToOverride")
            }
        }
    }

2. следующее использование в IDE flash.Some объекта в библиотечной ссылке класс ActionScript (C): myClass. Затем введите следующий код в MainTimeLine объекта

    function waitToOverride(){
        // this will override myClass's waitToOverride method.
        trace("this is overrided code of waitToOverride");
    }
    waitToOverride()//this is overrided code of waitToOverride

пс. сделай это, ты поймешь, что я имею в виду Редактировать Niauwu http://blog.yam.com/celearning/article/28409939

0 голосов
/ 01 сентября 2011

dispatchEvent () является общедоступным, и ваш код имеет значение по умолчанию в пространстве имен по умолчанию. Вы должны сделать переопределить функцию dispatchEvent (evt: Event): Boolean

...