Связь между c ++ и actionscript 3 - PullRequest
       1

Связь между c ++ и actionscript 3

7 голосов
/ 10 сентября 2010

Можно ли использовать какой-либо механизм IPC для вызова API C ++ из скрипта действий Adobe Flash? Есть ли хорошие примеры?

Обновление: теперь я в первую очередь хочу его для настольных приложений, т. Е. Adobe / или любого другого рабочего стола

Ответы [ 6 ]

2 голосов
/ 27 сентября 2010

Если вы нацелены на среду выполнения Adobe AIR, вы можете использовать NativeProcess API , который был представлен в AIR 2.0.Этот API позволяет порождать внешние процессы и взаимодействовать с ними через stdin и stdout.

Если вы чувствуете себя предприимчивым и хотите сделать что-то недокументированное и полностью неподдерживаемое, вы можете подключиться к внутренним компонентам LocalConnection, взаимодействуя сфайл отображенный в памяти Flash Player.Более подробная информация содержится на сайте osflash.org / localconnection .Этот подход имеет некоторые ограничения и не поддерживается.Я не рекомендую это.

Как уже упоминалось в некоторых других ответах, вы также можете использовать сокетное соединение для отправки / получения данных.

2 голосов
/ 26 сентября 2010

Это невозможно из браузера-плеера. Из приложения AIR вы можете использовать Socket API для выполнения IPC.

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.html?allClasses=1

2 голосов
/ 10 сентября 2010

Не из флеш-плеера, так как это очень вероятно нарушит его модель безопасности. Вы можете вызвать C ++ из Tamarin VM, что, например, mod-actionscript делает. Можно было бы передать ваши вызовы на сервер AS3, вызвать некоторые функции C ++ и отправить результат обратно. Другим вариантом является кросс-компиляция кода C ++ в AVM2 с использованием alchemy . Но если вы хотите вызвать C ++ для доступа к функциям на клиентском компьютере, недоступным из проигрывателя Flash Player (доступ к файловой системе, UDP и т. Д.), Тогда нет никакого способа.

редактирование:
Хорошо, я полагаю, есть следующие опции:

  • посмотрите на пакет flash.accessibility и решите его только с AS3
  • создать демон C ++, работающий в фоновом режиме, который может иметь двунаправленную связь с Flash через
    • локальный сокет (вы бы связали порт в демоне, а флеш-клиент подключился бы к нему) с пользовательским протоколом
    • a LocalConnection. Это выглядит немного лучше с точки зрения AS3, но требует небольшого взлома на стороне C ++, так как вам нужно получить соединение и реализовать протокол (указатели здесь )
  • используйте альтернативное время выполнения: Adobe Air, Zinc, SWHX (требуется Haxe, хотя "backend" - это neko, но его можно легко расширить)
0 голосов
/ 10 января 2012
0 голосов
/ 10 сентября 2010

Некоторое время назад я читал о поддержке ActiveX во флэш-памяти.Возможно, вы могли бы написать обертку ActiveX вокруг вашего C ++ Api и называть это так.С Air 2.0 у вас есть еще одна возможность - вы можете вызывать внешние программы.Если вы напишите обертку командной строки вокруг вашего API, вы можете назвать это так.

0 голосов
/ 10 сентября 2010

Это действительно зависит от того, что такое "API" звонки "вы ссылаетесь на это. Если они ссылаются к механизмам МПК, как правило, ответ нет. Вы можете скомпилировать код, но у вас не будет реализация для поддержки этих вызовов. Если вы используете сокеты, вы можете реализовать поддержку для этого во Flash хотя алхимия в настоящее время не Поддержка API сокета (). Является ли это помочь?

через

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...