Vc与Flash通信分为两部分,1、flash动画告诉我们什么。2、我们告诉Flash什么。
1.使用FSCommand(command,args)向Flash外部发送消息。
FSCommand(command,args)的两个参数都是任意字符串,比如用户按下flash动画的一个按钮就发送FSCommand("bt","bt1")这样一个消息,按下另一个按钮发送FSCommand("bt","bt2"),而我们的程序收到FSCommand消息后就对通过两个参数的不同字符串来判断用户按下的是哪个按钮。
原理就是这样子的,要实现的话就得在flash动画中使用FSCommand发送消息,在我们的程序接收和处理FSCommand消息了。我们做一个简单的例子。
首先:用flash画一个按钮和文本框(输入文本框名为tt,按钮名为a)flash界面有点丑,仅用来示意!!!
选中按钮元件,右键动作,加入如下代码
on(release)
{
fscommand("bt",tt.text);
}
导出影片,命名5.swf。
然后:编写vc代码
1.新建一个MFC对话框应用程序showflash
2.添加shockwaveflashobject控件,并生成一个该控件的对象。假设关联的对象名为FlashUI.
MFC界面如下:
3.响应按钮OpenFlash
void CShowFlashDlg::OnBnClickedOpenFlash()
{
// TODO: Add your control notification handler code here
CString filename;
CFileDialog fileopen(TRUE);
if (IDOK==fileopen.DoModal())
{
filename=fileopen.GetPathName();
flashUI.LoadMovie(0,filename);
flashUI.Play();
}
}
注:这里的打开没有限定一定只能试swf格式文件。你可以直接从你电脑上选择swf文件
4.响应fscommand事件
void CShowFlashDlg::FSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args)
{
// TODO: Add your message handler code here
CString str;
str.Format("command=%s args=%s",command,args);//简单的消息传递机制
MessageBox(str);
int x=atoi(flashUI.GetVariable("_root.tt.text"));//将输入文本的数值传给vc;
CString DL_x;
DL_x.Format("%d",x);
MessageBox(DL_x);
flashUI.SetVariable("_root.a._y",DL_x);//根据输入文本的数据调整按钮位置
}
在文本框中输入:2
然后点击蓝色空间后的效果图
响应 str.Format("command=%s args=%s",command,args);//简单的消息传递机制
MessageBox(str);
int x=atoi(flashUI.GetVariable("_root.tt.text"));//将输入文本的数值传给vc;
CString DL_x;
DL_x.Format("%d",x);
MessageBox(DL_x);//消息盒子显示输入文本中的值
flashUI.SetVariable("_root.a._y",DL_x);//根据输入文本的数据调整按钮位置
由下图可以看出蓝色按钮的位置移动了。