1

我正在使用如下命令从 Flash 应用程序进行通信: ExternalInterface.call("hello", "world")

这在 C# 端通过以下方式处理:

string swfPath = Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "test.swf";
this.axFlash.LoadMovie(1, swfPath);
this.axFlash.FlashCall += new AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEventHandler(axFlash_FlashCall);

并且偶函数声明为

void axFlash_FlashCall(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEvent e)
{
}

只要屏幕上有一个设置为使用 TLF 文本的文本框,axFlash_FlashCal 就可以正常调用。(任何文本框都可以,没有特定的 ID)。没有文本框,甚至不会触发。(即使 ExternalInterface.Avaliable 设置为 true)

我尝试使用 CS4 和 CS5 发布,同时使用 Flash 10 和 9 作为输出。这些事情都没有改变。

我正在使用 AS3 和 .NET 4.0。有没有人遇到过这个问题,或者知道为什么需要 TLF 文本才能工作?

4

1 回答 1

1

我发现这是因为 TLF 文本在执行之前强制加载整个 SWF。如果没有 TLF 文本,它会尝试流式传输 SWF,这显然会破坏 ExternalCommunication。

有谁知道强制预加载的简单方法?在这一点上,我唯一可行的解​​决方案是让一个 SWF 预加载另一个。

于 2010-06-15T15:28:59.973 回答