版权声明:本文为博主原创,转载请注明来源 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> </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> </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->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中添加事件响应:
-
<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++中添加调用:
-
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++, 就可以看到效果了: