我正在开发一个具有Web浏览器控件的Windows应用程序。在某个链接Web浏览器加载了.SWF
(flash文件),在那个flash中有一个按钮,标题为“Start”,当用户点击时在这个按钮上然后一些动画开始。
当用户点击“开始”按钮时,我想要该事件。
我能这样做吗?
我无法在.SWF
文件中添加任何代码。
有什么想法吗?
答案 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 + "");
}