现在的位置: 首页 > 综合 > 正文

MFC如何调用Flash

2013年03月27日 ⁄ 综合 ⁄ 共 2241字 ⁄ 字号 评论关闭

最近要用Flash做程序界面,所以研究了下如何在MFC下调用flash,其他开发工具也差不多的,flash会提供统一的外部API接口。

      //-------------------------------------------------------------------------------- 

        首先是在MFC中增加flash控件:就是shockwave flash object控件,现在一般电脑都有装flash的,所以这个都有。“建立对话框应用程序后,在主菜单里选择“工程->添加工程->components and controls”菜单选项,这时会弹出一个components and controls gallery文件选择对话框,里面有两个文件夹,一个是registered activex controls,一个是visual c++ components。选择第一文件夹后会出现一系列系统上已注册过的activex控件。在里面选择shockwave
flash object(如果你系统上没这个控件,这里面就找不到了,可以去download个下来安装),点击insert将它插入工程。因为在vc中插入工程的控件要通过一个类来操作,所以这时vc会提示你为这个控件指定一个类名,可以使用默认的类名就行了。插入后vc会自动把这个类加入工程里面。”如果已经装了flash但是registered activex controls里边没找到,说明没注册,貌似装个flash开发工具就可以了..

         4、生成一个该控件的对象。将shockwave flash object控件成功插入自己的工程后,在vc对话框编辑器的controls面板上就会多出图标,这个图标就是刚加入的控件的图标了。呵,这样接下来怎么用就再清楚不过了吧。和使用BUTTON、EDIT等其它windows控件一样,把它拉到对话框上,给它关联一个对象,对象的类就是我们刚才插入控件的时候所产生的类。我们可以使用这个类的成员函数来操纵这个对象,来进行flash动画的控制以及和自己的程序进行交互等操作了。这里假设关联的对象名为:m_FlashPlayer。
  5、使用成员函数LoadMovie和Play来导入并播放动画。
m_FlashPlayer.LoadMovie(0, strMovieUrl);该函数用来将动画导入程序中,strMovieUrl为要播放的flash路径,要用绝对路径。 m_FlashPlayer.Play();调用该函数开始播放动画。在初始化对话框的函数里面加入这两个函数调用即可。
  怎么样,现在运行程序,看到flash嵌入到你的程序里面了吧。还有几个常用的函数可以用来控制动画的播放,如GotoFrame(long FrameNum)可以转到FrameNum侦播放(侦数从0开始),StopPlay()可以停止播放。。。,还有很多,可以自己试试^_^。下面我们要介绍如果进行交互性的控制了。

上面三段来自网络..上面的说明,已经能在MFC中实现播放flash了,但是实现交互还是不行。

实现与flash交互,有两种方法,1:模拟鼠标点击事件,就是控制鼠标去点击flash(我同学说他睡觉时想到的,而且真的能实现,服了!) 2、是要flash提供接口,这就需要有flash的源码,然后自己修改,增加外部函数接口。以下来自百度知道,照里边做,就可以实现外部接口:

MFC可以直接设置和得到flash中的变量。调用控件的GetVariable方法和SetVariable方法现。

想让flash主动往MFC传内容并且让MFC程序响应,可以在flash中调用fscommand函数,把内容传出去。此时MFC会收到控件的FSCommand事件和内容,就可以用MFC处理了。

想让MFC主动往flash传内容并且让flash响应,用控件的CallFunction方法。
想用这种方法需要先干一些事情:
在FLASH中,要用ExternalInterface.addCallback把能被外部调用的函数注册一下,例如:
import   flash.external.ExternalInterface;    
ExternalInterface.addCallback("theFunctionToCall", null, theFunctionToCall);
function theFunctionToCall()
{
//...
}
在MFC中,调用CallFunction方法,传入一个比较复杂的字符串,描述了要调用的函数的名称、参数等等,以XML的形式呈现。详情参考FLASH帮助的“外部 API 的 XML 格式”一文。

详情可以参考FLASH帮助里的“使用 ExternalInterface 类”的文章。
//--------------------------------------------------------------------------------

 

注意,此处CallFunction传递的参数为XML格式,如下:
m_flash.CallFunction(_T("<invoke name=\"FullScreen\" returntype=\"xml\">\<arguments></arguments>\</invoke>"));
FullScreen为flash里边的外部函数接口,此处并无参数,且无返回类型

抱歉!评论已关闭.