PDA

Просмотр полной версии : Взаимодействие Flash и внешних (локальных!) прогамм!


Makcumka
20.01.2007, 12:37
Какими способом можно заставить Flash-ку взаимодействовать с локальными (не серверными) приложениями?
Т.е. есть flash'ка которая запускается локально. Но поскольку возможности ActionScript не безграничны возникает необходимость взаимодействовать с программой, которая "способна на многое" (Примером такой ситуации: внешняя программ проделывает сложные математические расчёты а flash-мувик должен их красиво иллюстрировать).
Поизучав вопрос нарыл несколько способов, но способы далеко не элегантные:away:. Может ли кто-нибудь предложить другие способы (не обязательно элегантные, но другие;))

С помощью ActiveX-компоненты flash-мувик можно засунуть внутрь приложения написанного на Delphi http://actionscript.com.ua/wfsection+article.articleid+96.htm http://actionscript.com.ua/wfsection+article.articleid+56.htm, но как при этом обмениваться информацией с мувиком (т.е. командами и/или данными) не понятно (а если не обмениваться информацией то зачем это вообще нужно?)
Есть отличный механизм External Interface http://flash-ripper.com/articles/flash/2005-10-24-external-interface.htm, но взаимодействовать с JavaScript'ом есть смысл только если эта flash-ка загружена из web и должна каким-то образом взаимодействовать со страницей на которой находиться, а в нашем "локальном" случае JavaScript не дает возможность сделать что-то такое, что не возможно в ActionScript. А как взаимодействовать с другого сорта приложениями из статьи непонятно (может кто знает - подскажите).
От безъисходности у меня родилась следющая идея: написать программу, которая бы прикидывалась web-сервером (открыла бы, например, порт 8080 на локальной машине) и дала команду браузеру открыть себя (т.е. открыть http://127.0.0.1:8080/). В случае такого обращения к ней программа передаёт браузеру (всё происходит по протоколу http) страницу содержащую только flash-мувик. Когда мувику надо обменяться какой-то инфой с внешней программой он использует обычный LoadVars, а внешняя программа фабрикует http-пакеты подобные ответу php-скрипта. Такое решение содержит несколько очевидных минусов: во-первых, если внешняя программа хочет послать какую-то команду мувику, то как сделать чтобы мувик об этом узнал? во-вторых, написание такой программы требует серьёзного времени, а мы хотим всё сделать быстро и красиво:rolleyes:

Какие у Вас есть мысли/опыт по данному вопросу. Огромным плюсом было бы, если внешнее приложение (не flash) было бы незаметно :cool: и весь интерфейс пользователю предоставлялся бы через flash.

silin
20.01.2007, 13:29
интересная статейка (http://www.osflash.org/localconnection) как организовать нефлешевый конец LocalConnection

miramax
20.01.2007, 14:23
Проще засунуть флешку в виндоус приложение и создать сокетное соединение с объектом (который находится внутри того же приложения) реализующим доступ к файловой системе :)

FourSide
22.01.2007, 11:45
Для Дельфи - берем файл flash.ocx (кажется так называется) из каталога с установленным флэшом. Добавляем новый компонент на панель Дельфи (будет называться нечто Shockwave...).
Ну и дальше работаем с ним как с обычным компонентом, у него есть свои методы и свойства, которые подсвечиваются (как обычно).