|
|
|||||
Banned
|
Как определить способ загрузки ?
Задача такая. Есть флеш-приложение, играющее роль оболочки. Эта самая оболочка может подгружать другие флеш-приложения, играющие роль плагинов. Когда такой плагин загружается в оболочку, ему нужно передавать некий список параметров инициализации. И тут возникает такая проблема. Как этот самый плагин запустить самостоятельно без оболочки, с некоторыми параметрами инициализации по умолчанию ? Это не обязательно, но было бы желательно делать. Например для удобства отладки.
Можно было бы попытаться оболочкой перехватывать вызов конструктора плагина и подсовывать ему нужные инициализации вместо умолчательных. Однако как я выяснил, после загрузки sfw-файла конструктор вызывается всегда. Причем до возникновения событий COMPLETE или INIT. И перехватить вызов конструктора у оболочки никак не получается. Другой способ - определять в конструкторе плагина, каким способом файл был загружен. И если он был загружен просто в плеер, стартовать с параметрами по умолчанию. А если его загрузила оболочка, не делать ничего и ждать правильной инициализации. К сожалению с этим тоже ничего не вышло. ExternalInterface.ObjectID почему-то всегда возвращает null если запускается в отдельном плеере и Main при запуске в Firefox. Вне зависимости от способа загрузки - непосредственно или с помощью оболочки через Loader.load. Вобщем я с этой задачкой так и не справился. Просто закомментировал весь код конструктора в релизной версии плагина. А когда его отлаживал, там была инициализация с удобными для отладки параметрами. Так что сейчас плагин у меня самостоятельно без оболочки запускаться не может. Мне оно не особо и надо. Но кто знает, вдруг пригодится ? Кто нибудь из благородных донов сталкивался с описанной ситуацией ? Можете поделиться решением ? |
|
|||||
Banned
|
Document-класс ??? Честно говоря впервые слышу такое. Надо будет глянуть в документации. Сейчас все плагины я наследую от базового класса Plugin, который в свою очередь наследуется от Sprite и просто объявляет определенный интерфейс взаимодействия с оболочкой, которого все плагины должны придерживаться. Спасибо большое ! Всегда узнаешь что-то новенькое...
|
|
|||||
Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
|
eugenk, в среде разработки Adobe Flash CS3 (CS4) введено новшество (оно правда давным-давно уже не является новшеством, но для Вас, похоже, это есть новшество) поле Document Class - для быстрого подключения главного класса приложения, тобишь создания точки регистрации программы.
|
|
|||||
Banned
|
Мечтатель, честно говоря я с Adobe Flash не работаю. Я чистый программист и всё пишу на FDT. Так что разумеется об этом не знал. Но поскольку штука важная, наверняка к ней есть доступ и из чисто языковой среды. Спасибо за подсказку где именно это искать.
|
|
|||||
Регистрация: Jun 2007
Сообщений: 374
|
Плагин на то и плагин, чтобы отлаживать его в среде, которая его подключает, а не автономно.
Мало того, когда я такую задачку решал, я еще и исключал из плагинов классы ядра при компиляции, поэтому они вообще не работали, если их кто-то другой грузит. |
|
|||||
Banned
|
s8000_1, ну это утверждение как бы немного спорно. Интерфейс плагинов я сделал лишь простейший. Намеренно упрощенный для легкости последующего наращивания функционала при сохранении совместимости. Из оболочки плагин вызывается функцией Command с параметрами, а сервисы оболочки из плагина функцией Callback. Вот и весь интерфейс кроме инициализации и контроля версий. А потому отдельная отладка тут вполне имеет смысл. Отдельный запуск релизных версий плагинов смысла пожалуй не имеет. Хотя кто знает... Я вообще очень люблю то что хорошо конфигурируется, и запускается во множестве режимов, вне зависимости от того на чем оно написано. Просто подход к разработке такой.
|
|
|||||
Регистрация: Jun 2007
Сообщений: 374
|
Читерский метод, как проверить, откуда запущен плагин: в конструкторе проверить наличие stage:
2й способ - никогда не запускать плагины самостоятельно. Т. е. всегда из какого-то контейнера инициализировать. Я использую контейнеры-инициализаторы для тестов. Иначе возникает жуткая путаница, кто чего откуда инициализирует. Последний раз редактировалось s8000_1; 09.04.2009 в 17:01. |
|
|||||
Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
|
Я тоже чистый программист и всё пишу на ADOBE Flash CS4, либо на ADOBE Flex Builder 3. Или тех кто пишут код на родной для Flash IDE от Adobe называют грязными?)))
|
Часовой пояс GMT +4, время: 05:13. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|