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

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

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

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

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

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

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

 

 

 

 

 

 

 

 

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

 

 

 

 

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

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

 

 

 

 

 

 

 

 

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

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

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

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

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

 

 

 

 

 

 

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

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

4060 Всего просмотров 10 Просмотров за сегодня
Опубликовано 06.08.2012 в 17:02 · Автор illuzor · Ссылка
Рубрики: программирование · Теги: 

5 комментариев

Подписаться на комментарии по RSS

  1. Написал(-а) Lord_Xaoca
    17.08.2012 в 23:49
    Ответить · Ссылка

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

  2. Написал(-а) пингвин
    18.10.2012 в 20:08
    Ответить · Ссылка

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

    • Написал(-а) iLLuzor
      18.10.2012 в 21:32
      Ответить · Ссылка

      По-моему, глупый вопрос. Вы ищите улучшение производительности не там, где следует.

      • Написал(-а) пингвин
        22.10.2012 в 10:44
        Ответить · Ссылка

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

        • Написал(-а) iLLuzor
          22.10.2012 в 17:05
          Ответить · Ссылка

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

Подписаться на комментарии по RSS

Написать комментарий