Форум 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, 19:49
Мечтатель вне форума Посмотреть профиль Отправить личное сообщение для Мечтатель Найти все сообщения от Мечтатель
  № 6  
Ответить с цитированием
Мечтатель
 
Аватар для Мечтатель

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

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

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

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

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

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

Старый 09.04.2009, 16:57
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 9  
Ответить с цитированием
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.
Создать новую тему Ответ Часовой пояс GMT +4, время: 01:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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