logo资料库

VS2010中添加Flash控件 flash播放器开发.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
一、准备工作 第一步:下载并安装 Adobe Flash Player。 从官方网站(http://get.adobe.com/cn/flashplayer/)上下载最新的 Flash Player(大约为 2.66M),并安装。 对于 Windows 32 位系统,其默认安装目录为:C:\WINDOWS\system32\Macromed\Flash\;对于 64 位系统, 为:C:\Windows\SysWOW64\Macromed\Flash。 Flash 控件的大版本号用数字表示,如 9,10,11 等,小版本号用小写字母表示,如 a, b, c, d, e。如我安装 的版本为:Flash10l.ocx。 第二步:通过 regsvr32.exe 注册 flash 控件 Flash10l.ocx。 从开始菜单中打开运行对话框,并输入:regsvr32 C:\Windows\SysWOW64\Macromed\Flash\Flash10l.ocx 注册该控件(注册之后就可以在项目中进行控件添加了),如果注册成功,有如下提示: 注销控件的命令行为 regsvr32 /u C:\Windows\SysWOW64\Macromed\Flash\Flash10l.ocx。 二、新建 MFC 项目,添加 Flash 控件 第一步:建立基于对话框的 MFC 程序。 打开 Visual Studio 2010,新建项目,选择“MFC 应用程序”,并将其命名为 MFCFlash。
在接下来的选型设置中,选择应用程序类型为“基于对话框”,其他可按默认设置。项目建成后,程序默认 添加了 MFCFlash 和 MFCFlashDlg 的头文件和实现文件,截图如下: 第二步:添加 Shockwave Flash Object 类。 VC++ 6.0 中,可以使用 ClassWizard 添加 ActiveX 控件,而 VS2005 以后的版本没有。如果要添加 ActiveX 对应的类,可以“项目”→“添加类”→“ActiveX 控件中的 MFC 类”,打开“从 ActiveX 控件添加类向导”对 话框。选择从“文件”添加类,找到 Flash 控件的安装位置,即可添加 Shockwave Flash 控件,接口选择 “IShockwaveFlash”,以生成 CShockwaveFlash 类(类的名称可以修改)。插入后,VC 会自动把这个类加入 工程里面。
第三步:添加 Shockwave Flash Object 控件。 在资源视图里找到“Dialog”,并选择其中的 IDD_MFCFLASH_DIALOG,在其上点右键,选择“插入 ActiveX 控件”,从弹出的列表中选择“Shockwave Flash Object”。 使用 BUTTON、EDIT 等其它 Windows 控件一样,我们可以使用这个类的成员函数来操纵这个对象, 来进行 Flash 动画的控制以及和自己的程序进行交互等操作了。在 Flash 控件上点右键,然后选择“添加变 量”,设定“变量名”为:m_FlashPlayer。可再次在 Flash 控件上点右键,然后选择“属性”,将其 ID 改 为 IDC_SHOCKWAVEFLASH。
第四步:使用成员函数 LoadMovie 和 Play 来导入并播放动画。 在 MFCFlashDlg.cpp 文件中,找到 CMFCFlashDlg::OnInitDialog()函数,在“return TRUE”之前添加代码: CString str = _T("E:\\VS\\Flash\\media\\test.swf"); m_FlashPlayer.LoadMovie (0, str); m_FlashPlayer. Play (); 其中 m_FlashPlayer.LoadMovie(0, str)用来将动画导入程序中,str 为要播放的 flash 路径,要用绝对路径(注 意路径用双斜杠“\\”隔开); m_FlashPlayer. Play ()开始播放动画。 现在运行程序,就可以看到 flash 嵌入到程序里面了。还有几个常用的函数可以用来控制动画的播放,如 GotoFrame(long FrameNum)可以转到 FrameNum 侦播放(侦数从 0 开始),StopPlay()可以停止播放。。。, 还有很多,可以自己试试。下图是我做的一个飞行仪表,界面比较丑陋,凑合看吧^_^
三、实现 MFC 与 Flash 的通信 1、Flash 通过 FSCommand 消息调用 MFC 第一步:添加消息处理函数。 在 Flash 控件上点右键,然后选择“添加事件处理程序”,在类列表选择“CMFCFlashDlg”,消息类型选 择“FSCommand”,则函数处理程序名称自动为“FSCommandShockwaveflash”。它的形式大概是这样子的: void CMFCFlashDlg::OnFSCommandShockwaveflash(LPCTSTR command, LPCTSTR args) ;函数有两个 参数,就是 flash 的 Action Script 中 FSCommand 语句中的两个参数。其实并不一定两个参数都用到,flash 脚 本中可以就使用一个参数,这样这边的函数就只要对第一个参数进行处理就行了。 第二步:编写消息处理代码。 在刚添加的 FSCommand 消息处理函数中,对两个参数进行处理。其实就是做字符串比较的操作,根据是 什么字符串来判断用户进行了什么操作。大概就是这样子的: void CPlayFlashDlg::OnFSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args) { // TODO: Add your control notification handler code here if( 0 == strcmp(command,”bt”) ) { if( 0 == strcmp(args,”enter”) ) { MessageBox(“欢迎进入系统!”);
} } else if( 0 == strcmp(command,”quit”) ) MessageBox(“您选择了退出!”); CDialog::OnCancel(); { } } 这只是最简单的处理形式,当然你可以在 flash 中发送复杂的字符串,在这边就要进行更多的处理了。 2、MFC 通过 CallFunction 函数调用 Flash 第一步:Flash 中 ExternalInterface.addCallback 用处理。 在 FLASH 中,要用 ExternalInterface.addCallback 把能被外部调用的函数注册一下,例如: ExternalInterface.addCallback("setAlt", setAlt); function setAlt (para:String = "3150") { } alt.text = para; //alt 为 swf 文件中的一个动态文本 第二步:MFC 中使用 CallFunction 函数传入参数。 想让 MFC 主动往 flash 传内容并且让 flash 响应,用控件的 CallFunction 方法。在 MFC 中,调用 CallFunction 方法,传入一个比较复杂的字符串,描述了要调用的函数的名称、参数等等,以 XML 的形式呈现。详情参考 FLASH 帮助的“外部 API 的 XML 格式”一文。此处 CallFunction 传递的参数为 XML 格式,如下: CString temp = _T("\ 3500FT\ m_FlashPlayer.CallFunction(temp); "); 注意,必须是完整的一行,具体为什么我也不太清楚。再次运行程序,可以发现ALT的值 已经由3280FT变成了3500FT。
分享到:
收藏