Flash与C#通信

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Flash与C#通信

1.注册控件

首先要插入Flash就必须使用Flash控件,在工具栏右键选择“选择项…”,然后在“COM 组件”面板下点击“浏览”按钮,在本机电脑C:\WINDOWS\system32\Macromed\Flash\目录里选择Flash10x.ocx(也有可能是Flash10v.ocx或flash10p.ocx),然后点击确定就可以了。

在CMD里面输入如下:

regsvr32 C:\WINDOWS\system32\Macromed\Flash\Flash10x.ocx

系统会提示注册成功。

2.控件属性

打开VS,然后工具栏中选择的Flash控件Shockwave Flash Object拖到窗体中,

注意到该控件主要有几个属性:

Name属性,这个是所有对象都会有的。

Menu属性,这个是Flash菜单项,默认值为true,也就是右键的时候会出现完整的Flash 菜单,如果设置为False,则只出现最简单的菜单(设置与关于)。

Move属性,这个属性是用来指定要播放的Flash文件的。

Playing属性,指定是否装在影片之后马上播放。

Quality属性,设置影片的质量。

Scale Mode属性,设置影片的缩放模式。

Visible属性,设置影片控件的可视与否。

3.隐藏Flash控件右键菜单

这个方法主要用到继承和重写等面向对象的核心内容。

首先声明一个类,让它去继承AxShockwaveFlashObjects.AxShockwaveFlash,该类是实例化Flash控件生成的类。该类中包含各种Flash的事件和属性,在这里我们只对右键菜单的事件感兴趣,因此我们去重写该事件。

类的代码如下:

public class FlashRightKey : AxShockwaveFlashObjects.AxShockwaveFlash

{

//定义一个公共类FlashRightKey(类名自己定义)来继承AxShockwaveFlashObjects.AxShockwaveFlash(在实例化Shockwave Flash Object控件后生成)类

protected override void WndProc(ref Message m) //重载WndProc方法(此方法即消息处理机制)

{

if (m.Msg == 0X0204) //0×0204即鼠标右键的16进制编码

return; //返回并不输出

else

base.WndProc(ref m); //如果不是右键的话则返回正常的信息

}

}

类写好了,我们要在Flash控件里面使用它,必须在实例化Flash控件的时候用如下代码(写在Flash.Designer.cs文件相应的地方):

private FlashRightKey RollFlash;

this.RollFalsh = new Namespace.FlashRightKey();

4.C#与Flash控件通信

通信数据采用XML格式。

C#代码:

绑定Flash控件

private void FlashTest_Load(object sender, EventArgs e)

{

Flash.Movie = Application.StartupPath + @"\Test.swf";

}

调用flash提供的外部接口

private void CallFunction(string funName, string flag)

{

Flash.CallFunction(EncodeXML(funName, flag));

}

将数据转换成XML格式

private string EncodeXML(string funName, string flag)

{

StringBuilder sb = new StringBuilder();

XmlTextWriter xw = new XmlTextWriter(new StringWriter(sb));

xw.WriteStartElement("invoke");

xw.WriteAttributeString("name", funName);

xw.WriteAttributeString("returntype", "xml");

xw.WriteStartElement("arguments");

xw.WriteStartElement("string");

xw.WriteString(flag);

xw.WriteEndElement();

xw.WriteEndElement();

xw.WriteEndElement();

xw.Flush();

xw.Close();

return sb.ToString();

}

执行动画开始操作

private void Btn_Start_Click(object sender, EventArgs e)

{

CallFunction("Call", "001");

}

执行动画结束操作

private void Btn_End_Click(object sender, EventArgs e)

{

CallFunction("Call", "002");

相关文档
最新文档