C++与Flash的交互

74 篇文章 0 订阅
36 篇文章 0 订阅

http://blog.csdn.net/xoyojank/article/details/3122679

研究Flash嵌入游戏中的可行性.......

  • 渲染问题已解决
  • 事件响应已解决
  • 下面是C++与Flash AS的交互, 以MFC为例:

1. 新建一个MFC Dialog程序

2. 添加一个Flash控件

 

3. 把Flash控件添加一个变量

 

4. 在OnInitDialog()中添加载.swf文件

  1. // CCppFlashDlg 消息处理程序    
  2.   
  3. BOOL CCppFlashDlg::OnInitDialog()  
  4. {  
  5.     CDialog::OnInitDialog();  
  6.   
  7.     // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动    
  8.     //  执行此操作    
  9.     SetIcon(m_hIcon, TRUE);         // 设置大图标    
  10.     SetIcon(m_hIcon, FALSE);        // 设置小图标    
  11.   
  12.     // TODO: 在此添加额外的初始化代码    
  13.     this->flashUI.LoadMovie(0, "C://Documents and Settings//Administrator//My Documents//My Flash//HelloWorld.swf");  
  14.     return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE    
  15. }  

5. 制作一个flash, 放一个Button上去, 导出一下就可以在MFC中看到了

 

6. flash调用C++.

这个很简单, 在flash的那个Button组件的动作中添加脚本:

[javascript] view plain copy
  1. on(click)  
  2. {  
  3.     fscommand("MsgBox""这是flash调用c++的响应");  
  4. }  

然后在MFC中添加事件响应:

  1. void CCppFlashDlg::FSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args)  
  2. {  
  3.     // TODO: Add your message handler code here   
  4.     if (0 == strcmp("MsgBox", command))  
  5.     {  
  6.         MessageBox(args);  
  7.     }  
  8. }  

7. C++调用Flash.

首先在Flash中注册回调函数:

 

[javascript] view plain copy
  1. import mx.controls.Alert;  
  2. import flash.external.*;  
  3.   
  4. ExternalInterface.addCallback("MsgBox"this, MsgBox);  
  5.   
  6. function MsgBox(msg:String)  
  7. {  
  8.     Alert.show(msg, "",Alert.OK);  
  9. }  

然后在C++中添加调用:

  1. void CCppFlashDlg::OnOK()  
  2. {  
  3.     // TODO: Add your specialized code here and/or call the base class   
  4.     this->flashUI.CallFunction("/  
  5.        <invoke name=/"MsgBox/">/  
  6.            <arguments>/  
  7.                <string>这是C++调用flash的响应</string>/  
  8.            </arguments>/  
  9.        </invoke>");  
  10. }  

另外, 还可以通过GetVariable()和SetVariable()来设置flash中定义的变量

 

8. 导出一下flash, 编译一下C++, 就可以看到效果了:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值