MFC与Flash的相互响应实例

				版权声明:本文为博主原创,转载请注明来源					https://blog.csdn.net/xoyojank/article/details/3122679				</div>
							<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
							            <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-f57960eb32.css">
					<div class="htmledit_views" id="content_views">
            <p>研究Flash嵌入游戏中的可行性.......</p><ul><li>渲染问题已解决</li><li>事件响应已解决</li><li>下面是C++与Flash AS的交互, 以MFC为例:</li></ul><p>1. 新建一个MFC Dialog程序</p><p>2. 添加一个Flash控件</p><p><img src="https://p-blog.csdn.net/images/p_blog_csdn_net/xoyojank/EntryImages/20081022/CppFlash_AddActiveX.JPG" alt=""></p><p><img src="https://p-blog.csdn.net/images/p_blog_csdn_net/xoyojank/EntryImages/20081022/CppFlash_AddFlash.JPG" alt=""></p><p>&nbsp;</p><p>3. 把Flash控件添加一个变量</p><p><img src="https://p-blog.csdn.net/images/p_blog_csdn_net/xoyojank/EntryImages/20081022/CppFlash_AddVariable.JPG" alt=""></p><p><img src="https://p-blog.csdn.net/images/p_blog_csdn_net/xoyojank/EntryImages/20081022/CppFlash_AddflashUI.JPG" alt=""></p><p>&nbsp;</p><p>4. 在OnInitDialog()中添加载.swf文件</p><p><textarea cols="50" rows="15" name="code" class="cpp">// CCppFlashDlg 消息处理程序  

BOOL CCppFlashDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动  
//  执行此操作  
SetIcon(m_hIcon, TRUE);         // 设置大图标  
SetIcon(m_hIcon, FALSE);        // 设置小图标  

// TODO: 在此添加额外的初始化代码  
this-&gt;flashUI.LoadMovie(0, "C://Documents and Settings//Administrator//My Documents//My Flash//HelloWorld.swf");
return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE  

}

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

 

6. flash调用C++.

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

on(click)
{
fscommand(“MsgBox”, “这是flash调用c++的响应”);
}

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

  1. <span class=“hljs-keyword”>void</span> CCppFlashDlg::FSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args)</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“2”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”>{</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“3”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”> <span class=“hljs-comment”>// <span class=“hljs-doctag”>TODO:</span> Add your message handler code here </span></div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“4”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”> <span class=“hljs-keyword”>if</span> (<span class=“hljs-number”>0</span> == <span class=“hljs-built_in”>strcmp</span>(<span class=“hljs-string”>“MsgBox”</span>, command))</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“5”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”> {</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“6”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”> MessageBox(args);</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“7”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”> }</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“8”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”>}</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“9”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”>

7. C++调用Flash.

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

 import mx.controls.Alert;
import flash.external.*;

ExternalInterface.addCallback(“MsgBox”, this, MsgBox);

function MsgBox(msg:String)
{
Alert.show(msg, “”,Alert.OK);
}

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

  1. void CCppFlashDlg::OnOK()</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“2”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”>{</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“3”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”> <span class=“hljs-regexp”>//</span> <span class=“hljs-symbol”>TODO:</span> Add your specialized code here <span class=“hljs-keyword”>and</span>/<span class=“hljs-keyword”>or</span> call the base <span class=“hljs-class”><span class=“hljs-keyword”>class</span> </span></div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“4”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”> this->flashUI.CallFunction(<span class=“hljs-string”>"/</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“5”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”> <invoke name=/"</span>MsgBox/<span class=“hljs-string”>">/</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“6”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”> <arguments>/</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“7”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”> <string>这是C++调用flash的响应</string>/</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“8”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”> </arguments>/</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“9”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”> </invoke>"</span>);</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“10”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”>}</div></div></li><li><div class=“hljs-ln-numbers”><div class=“hljs-ln-line hljs-ln-n” data-line-number=“11”></div></div><div class=“hljs-ln-code”><div class=“hljs-ln-line”>

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

 

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值