Иногда работа с классами из загруженного .swf файла бывает не очень удобной из-за того, что загружающий .swf не знает классов загружаемого.
Покажу на примере.
Класс загружаемого .swf:
Всё просто. Есть три метода, которые возвращают некоторые значения.
Компилим флешку с этим классом и подгружаем её следующим образом:
Всё работает отлично:
Но есть одна, если не проблема, то неприятная вещь. Автокомплит не покажет методов класса LoadedClass, потому что мы объявляем его, как Object, у которого этих методов просто нет.
Можно это исправить с помощью интерфейса, который класс LoadedClass должен имплементировать:
Этот же интерфейс должен быть в проекте загружающего .swf:
Объявляем переменную загруженного класса следующим образом:
В итоге получаем следующее:
Проект загружающей флешки состоит из класса Main и интерфейса ITest:
Проект загружаемой флешки состоит из основного класса MainClass, класса, к которому будет происходить обращение из загружающей флешки — LoadedClass и интерфейса ITest:
Теперь автокомплит видит методы класса LoadedClass, точнее, методы интерфейса ITest:
Этот способ будет рационален в случае большого количества методов или, если вы хотите скрыть реализацию методов от врагов посторонних глаз.
Исходник прилагается.
А еще удобно грузить такие библиотеки напрямую в текущий ApplicationDomain, для этого надо подшаманить с LoaderContext в URLRequest.
а типизация такая через интерфейс даёт прирост производительности?
По-моему, глупый вопрос. Вы ищите улучшение производительности не там, где следует.
почему же глупый?
разве поиск методов в типизированном классе не происходит быстрее?
Понятия «типизированный класс» не существует.
Строго типизированным может быть язык, но никак не класс.
И при чём тут вообще «поиск методов»?