实现QT与Flash交互操作
创始人
2024-07-31 12:41:25
0

要实现QTFlash交互操作,人家Flash不支持64位,所以,你的代码也只能是32位的。

首先是QT调用Flash中的函数:

QT中有一个控件叫QAxWidget,加载一个.swf文件代码如下:

  1. QAxWidget flash(this,NULL);   
  2. flash.setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));   
  3. flash.dynamicCall("LoadMovie(long,string)",0,”E:// First.swf ”);  

现在是如何调用Flash中方法的问题,首先要用Flash中的ExternalInterface.addCall方法来添加与外界交互的接入点:

  1. ExternalInterface.addCallback("drawCircleExternal",drawCircle);   

然后是如何在QT中调用这个函数,在我的AS3代码中,drawCircle需要一个int 型的参数,所以调用代码如下:

  1. QString str;   
  2. QTextStream(&str)<<""   
  3.  
  4.                          <<""   
  5.  
  6.                          <<""<<<""   
  7.  
  8.                          <<""   
  9.  
  10.                          <<"";   
  11.  
  12. flash.dynamicCall("CallFunction(string)",str);  

其中returntype是必须是xml,而且drawCircle的返回值无法得到,不知道为什么,不过这也不是很重要。

现在是如何在AS3 中调用C++的问题,这仍然是通过AS3中的ExternalInterface这个类中的call方法来实现。

AS3的代码如下:

  1. ExternalInterface.call("calcu","bbcc");  

其中calcu是外部函数名,“bbcc”是参数。

当在AS3中执行这段代码里,QAxWidget会产生个signal,形式如下

  1. FlashCall(QString)  

而其中QString的内容如下

  1. bbcc  

因此,在QT中要通过AS3调用C++,必须写一个slot并将其与上述的signal联系起来,具体代码如下:

  1. connect(&flash,SIGNAL(FlashCall(QString)),this,SLOT(calcu(const QString&)));  

将具体要被调用的代码放入calcu中即可,当然这里slot名不一定要与AS3中的函数名一样,可以随意更改。

【编辑推荐】

解析 QT 静态库和动态库

在Qt中如何写控制台程序

交互设计领域的包豪斯运动

基于Qt Web浏览器设计与实现

浅谈自动化测试工具 QTP脚本的重用

开源软件是基于JVM 平台之Qt移植QtJambi

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...