Удобный доступ к методам класса загруженного swf

Иногда работа с классами из загруженного .swf файла бывает не очень удобной из-за того, что загружающий .swf не знает классов загружаемого.

Покажу на примере.

Класс загружаемого .swf:

Всё просто. Есть три метода, которые возвращают некоторые значения.

Компилим флешку с этим классом и подгружаем её следующим образом:

Всё работает отлично:

 

 

 

 

 

Но есть одна, если не проблема, то неприятная вещь. Автокомплит не покажет методов класса  LoadedClass, потому что мы объявляем его, как Object, у которого этих методов просто нет.

 

 

 

Можно это исправить с помощью интерфейса, который класс  LoadedClass должен имплементировать:

Этот же интерфейс должен быть в проекте загружающего .swf:

 

 

 

 

 

Объявляем переменную загруженного класса следующим образом:

В итоге получаем следующее:

Проект загружающей флешки состоит из класса Main и интерфейса ITest:

Проект загружаемой флешки состоит из основного класса MainClass, класса, к которому будет происходить обращение из загружающей флешки — LoadedClass и интерфейса ITest:

Теперь автокомплит видит методы класса LoadedClass, точнее, методы интерфейса  ITest:

 

 

 

Этот способ будет рационален в случае большого количества методов или, если вы хотите скрыть реализацию методов от врагов посторонних глаз.

Исходник прилагается.

Удобный доступ к методам класса загруженного swf: 5 комментариев

  1. А еще удобно грузить такие библиотеки напрямую в текущий ApplicationDomain, для этого надо подшаманить с LoaderContext в URLRequest.

  2. а типизация такая через интерфейс даёт прирост производительности?

      1. почему же глупый?
        разве поиск методов в типизированном классе не происходит быстрее?

        1. Понятия «типизированный класс» не существует.
          Строго типизированным может быть язык, но никак не класс.
          И при чём тут вообще «поиск методов»?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *