c ++和actionscript 3之间的通信

问题描述 投票:7回答:6

是否可以使用任何IPC机制从Adobe Flash actionscript调用c ++ api?有什么好例子吗?

更新:我现在主要想要桌面应用程序,即Adobe的/或任何其他人的桌面运行时

c++ actionscript-3 flex4
6个回答
2
投票

浏览器播放器无法实现。在AIR应用程序中,您可以使用Socket API来执行IPC。

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


2
投票

如果您定位Adobe AIR运行时,则可以利用AIR 2.0中引入的NativeProcess API。此API允许您生成外部进程并通过stdin和stdout与它们进行通信。

如果您喜欢冒险并希望做一些无证件且完全不受支持的事情,您可以通过与Flash Player的内存映射文件交互来使用LocalConnection内部。关于osflash.org/localconnection网站的更多细节。此方法有一些限制,不受支持。我不推荐它。

如其他一些答案中所述,您还可以使用套接字连接来发送/接收数据。


2
投票

不是来自Flash播放器,因为它很可能违反其安全模型。你可以从Tamarin VM调用C ++,例如mod-actionscript正在做的。一个选项是将您的调用传递给AS3服务器,在那里调用一些C ++函数并发回结果。另一种选择是使用alchemy将C ++代码交叉编译为AVM2。但是如果你想调用C ++来访问客户端机器上的功能(Flash文件系统访问,UDP或其他等),那么就没办法了。

编辑: 好的,我想有以下几种选择:

  • 看看flash.accessibility包,只用AS3解决它
  • 创建一个在后台运行的C ++守护进程,它可以与flash通过双向通信 使用自定义协议的本地套接字(您将守护程序中的端口绑定,并且Flash客户端将连接到该端口) 一个LocalConnection。从AS3的角度来看,这看起来好一点,但需要对C ++方面进行一些小的攻击,因为你需要掌握连接并实现协议(指针here
  • 使用另一种运行时间:adobe air,zinc,swhx(虽然需要Haxe而且“后端”是neko,但neko可以很容易地扩展)

0
投票

这实际上取决于您所引用的“API调用”。如果他们提到IPC机制,通常答案是否定的。您可以编译代码,但是您没有实现来支持这些调用。如果您正在使用套接字,则可以在Flash中实现对该套接字的支持,尽管Alchemy目前不支持socket()API。这有帮助吗?

via


0
投票

前段时间我读到了flash中的ActiveX支持。也许您可以围绕C ++ Api编写一个ActiveX包装器并以这种方式调用它。使用Air 2.0,您还有另一种可能性 - 您可以调用外部程序。如果你在api周围写一个命令行包装器,你就可以这样调用它。


© www.soinside.com 2019 - 2024. All rights reserved.