Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.04.2009, 10:34
eugenk вне форума Посмотреть профиль Найти все сообщения от eugenk
  № 1  
Ответить с цитированием
eugenk
Banned

Регистрация: Apr 2001
Адрес: Russia Moscow
Сообщений: 32
Отправить сообщение для eugenk с помощью ICQ
По умолчанию Как определить способ загрузки ?

Задача такая. Есть флеш-приложение, играющее роль оболочки. Эта самая оболочка может подгружать другие флеш-приложения, играющие роль плагинов. Когда такой плагин загружается в оболочку, ему нужно передавать некий список параметров инициализации. И тут возникает такая проблема. Как этот самый плагин запустить самостоятельно без оболочки, с некоторыми параметрами инициализации по умолчанию ? Это не обязательно, но было бы желательно делать. Например для удобства отладки.

Можно было бы попытаться оболочкой перехватывать вызов конструктора плагина и подсовывать ему нужные инициализации вместо умолчательных. Однако как я выяснил, после загрузки sfw-файла конструктор вызывается всегда. Причем до возникновения событий COMPLETE или INIT. И перехватить вызов конструктора у оболочки никак не получается. Другой способ - определять в конструкторе плагина, каким способом файл был загружен. И если он был загружен просто в плеер, стартовать с параметрами по умолчанию. А если его загрузила оболочка, не делать ничего и ждать правильной инициализации. К сожалению с этим тоже ничего не вышло. ExternalInterface.ObjectID почему-то всегда возвращает null если запускается в отдельном плеере и Main при запуске в Firefox. Вне зависимости от способа загрузки - непосредственно или с помощью оболочки через Loader.load. Вобщем я с этой задачкой так и не справился. Просто закомментировал весь код конструктора в релизной версии плагина. А когда его отлаживал, там была инициализация с удобными для отладки параметрами. Так что сейчас плагин у меня самостоятельно без оболочки запускаться не может. Мне оно не особо и надо. Но кто знает, вдруг пригодится ? Кто нибудь из благородных донов сталкивался с описанной ситуацией ? Можете поделиться решением ?

Старый 09.04.2009, 12:32
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 2  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Цитата:
Сообщение от eugenk Посмотреть сообщение
Однако как я выяснил, после загрузки sfw-файла конструктор вызывается всегда.
Нужно сделать так, чтобы класс подгружаемого "плугина" не был Document class-ом.
__________________
Griver

Старый 09.04.2009, 13:10
eugenk вне форума Посмотреть профиль Найти все сообщения от eugenk
  № 3  
Ответить с цитированием
eugenk
Banned

Регистрация: Apr 2001
Адрес: Russia Moscow
Сообщений: 32
Отправить сообщение для eugenk с помощью ICQ
Document-класс ??? Честно говоря впервые слышу такое. Надо будет глянуть в документации. Сейчас все плагины я наследую от базового класса Plugin, который в свою очередь наследуется от Sprite и просто объявляет определенный интерфейс взаимодействия с оболочкой, которого все плагины должны придерживаться. Спасибо большое ! Всегда узнаешь что-то новенькое...

Старый 09.04.2009, 13:26
Мечтатель вне форума Посмотреть профиль Отправить личное сообщение для Мечтатель Найти все сообщения от Мечтатель
  № 4  
Ответить с цитированием
Мечтатель
 
Аватар для Мечтатель

Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
eugenk, в среде разработки Adobe Flash CS3 (CS4) введено новшество (оно правда давным-давно уже не является новшеством, но для Вас, похоже, это есть новшество) поле Document Class - для быстрого подключения главного класса приложения, тобишь создания точки регистрации программы.

Старый 09.04.2009, 13:50
eugenk вне форума Посмотреть профиль Найти все сообщения от eugenk
  № 5  
Ответить с цитированием
eugenk
Banned

Регистрация: Apr 2001
Адрес: Russia Moscow
Сообщений: 32
Отправить сообщение для eugenk с помощью ICQ
Мечтатель, честно говоря я с Adobe Flash не работаю. Я чистый программист и всё пишу на FDT. Так что разумеется об этом не знал. Но поскольку штука важная, наверняка к ней есть доступ и из чисто языковой среды. Спасибо за подсказку где именно это искать.

Старый 09.04.2009, 15:00
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 6  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
Плагин на то и плагин, чтобы отлаживать его в среде, которая его подключает, а не автономно.

Мало того, когда я такую задачку решал, я еще и исключал из плагинов классы ядра при компиляции, поэтому они вообще не работали, если их кто-то другой грузит.

Старый 09.04.2009, 16:52
eugenk вне форума Посмотреть профиль Найти все сообщения от eugenk
  № 7  
Ответить с цитированием
eugenk
Banned

Регистрация: Apr 2001
Адрес: Russia Moscow
Сообщений: 32
Отправить сообщение для eugenk с помощью ICQ
s8000_1, ну это утверждение как бы немного спорно. Интерфейс плагинов я сделал лишь простейший. Намеренно упрощенный для легкости последующего наращивания функционала при сохранении совместимости. Из оболочки плагин вызывается функцией Command с параметрами, а сервисы оболочки из плагина функцией Callback. Вот и весь интерфейс кроме инициализации и контроля версий. А потому отдельная отладка тут вполне имеет смысл. Отдельный запуск релизных версий плагинов смысла пожалуй не имеет. Хотя кто знает... Я вообще очень люблю то что хорошо конфигурируется, и запускается во множестве режимов, вне зависимости от того на чем оно написано. Просто подход к разработке такой.

Старый 09.04.2009, 16:57
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 8  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
Читерский метод, как проверить, откуда запущен плагин: в конструкторе проверить наличие stage:

Код AS3:
public function MyPluigIN(){
 super();
 if (super.stage){
  init();
 }
}
2й способ - никогда не запускать плагины самостоятельно. Т. е. всегда из какого-то контейнера инициализировать. Я использую контейнеры-инициализаторы для тестов. Иначе возникает жуткая путаница, кто чего откуда инициализирует.


Последний раз редактировалось s8000_1; 09.04.2009 в 17:01.
Старый 09.04.2009, 19:49
Мечтатель вне форума Посмотреть профиль Отправить личное сообщение для Мечтатель Найти все сообщения от Мечтатель
  № 9  
Ответить с цитированием
Мечтатель
 
Аватар для Мечтатель

Регистрация: Aug 2008
Адрес: 53 E
Сообщений: 60
Цитата:
Сообщение от eugenk Посмотреть сообщение
Я чистый программист и всё пишу на FDT. Так что разумеется об этом не знал.
Я тоже чистый программист и всё пишу на ADOBE Flash CS4, либо на ADOBE Flex Builder 3. Или тех кто пишут код на родной для Flash IDE от Adobe называют грязными?)))

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:13.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.