Неверное переопределение FlexModuleFactory в mx.core.FlexModuleFactory - PullRequest
1 голос
/ 16 января 2012

У меня есть приложение Flex 4.5.1, которое загружает другой SWF-файл (как модуль, который был написан и скомпилирован в Flex 3.2 SDK).

Я получаю ошибку недопустимого переопределения (см. Заголовок) в тот момент, когда загружен файл SWF 3.2.

Это даже разрешено, или загруженные модули должны быть скомпилированы с той же версией?

Если так, не могли бы вы объяснить, почему?

1 Ответ

3 голосов
/ 16 января 2012

Ошибка IllegalOverride возникает, когда класс неправильно переопределяет функцию из своего родителя. Примером этого может быть расширение класса Sprite и создание этой функции:

override public function addChild(value:Number):DisplayObject
{
    ....
}

Это недопустимое переопределение, так как подпись метода не совпадает (для нее необходимо принять DisplayObject, а не Number).

Наиболее вероятно, что FlexModuleFactory изменился между 3.2 и 4.5. Если FlexModuleFactory используется в вашем родительском SWF, то его определение существует в ApplicationDomain. Если вы загрузите свой дочерний SWF-файл в тот же ApplicationDomain, и этот дочерний SWF-файл содержит класс, расширяющий FlexModuleFactory, он будет использовать версию 4.5, которая уже существует в ApplicationDomain, а не версию 3.2, с которой был скомпилирован дочерний объект.

Возможно, вам удастся обойти эту проблему, загрузив свой дочерний SWF-файл в новый домен ApplicationDomain, то есть он не будет использовать ни одно из определений Class из родительского SWF-файла.

...