在WebBrowser控件C#中与Flash文件通信

时间:2012-09-18 07:12:10

标签: winforms c#-4.0 flash

我正在开发一个具有Web浏览器控件的Windows应用程序。在某个链接Web浏览器加载了.SWF(flash文件),在那个flash中有一个按钮,标题为“Start”,当用户点击时在这个按钮上然后一些动画开始。

当用户点击“开始”按钮时,我想要该事件。 我能这样做吗? 我无法在.SWF文件中添加任何代码。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您必须使用ExternalInterface。首先,我们需要导入这个新类,以便我们可以使用它(仅as2,在as3中它可以在没有导入的情况下工作):

import flash.external.ExternalInterface;

接下来,我们必须注册我们想要在外部提供的任何功能:

ExternalInterface.addCallback("addText", addText);

基本上,上面的代码将允许我们从C#应用程序调用addText函数(我将在一分钟内显示)。 addText函数如下所示。基本上,它需要一个字符串输入并将其附加到文本框

function addText(val:String):void
{
      inTxt.appendText(val + "\n"); // append text recieved from c#
}

这就是ActionScript方面的内容。现在我们需要做的就是从C#调用函数。首先,我将Flash Player ActiveX控件的一个实例添加到我的表单中,然后加载我们在表单构造函数中创建的SWF:

private AxShockwaveFlash player;

public DemoForm ()
{
      ...
      player.LoadMovie(0,Application.StartupPath + "\\EITest.swf");
      player.Play();
      ...
 }

接下来,我们所要做的就是调用外部化 方法,如果需要。在我的情况下,它是响应用户点击发送按钮:

 private void sendBtn_Click(object sender, EventArgs e)
 {
     player.CallFunction("" + outTxt.Text + "");
  }