Flash ActionScript:fscommand与ExternalInterface
在ActionScript中,您有两个与主机通信的选项。(在我的例子中是一个.NET应用程序,它使用AxInterop.shockwavelashObjects.dll来托管flash电影) 两者的主要区别是什么Flash ActionScript:fscommand与ExternalInterface,flash,actionscript,externalinterface,fscommand,Flash,Actionscript,Externalinterface,Fscommand,在ActionScript中,您有两个与主机通信的选项。(在我的例子中是一个.NET应用程序,它使用AxInterop.shockwavelashObjects.dll来托管flash电影) 两者的主要区别是什么 可能是fscommand在主机端到达时有一点延迟吗?(也就是说,它没有阻塞,因此可能会与外部接口调用混淆?ExternalInterface直接替代fscommand,后者是Flash和容器应用程序之间通信的旧方法(Flash前播放器8)(请参阅) 再次从文档中可以看出,Externa
可能是fscommand在主机端到达时有一点延迟吗?(也就是说,它没有阻塞,因此可能会与外部接口调用混淆?
ExternalInterface
直接替代fscommand
,后者是Flash和容器应用程序之间通信的旧方法(Flash前播放器8)(请参阅)
再次从文档中可以看出,ExternalInterface
优于fscommand
的优点如下:
- 您可以使用任何JavaScript函数,而不仅仅是您需要的函数 可以与fscommand()函数一起使用李>
- 您可以传递任意数量的参数和任意名称;你不是 仅限于传递命令和单个字符串参数。这给 外部API比fscommand()灵活得多
- 您可以传递各种数据类型(例如布尔、数字和 字符串);您不再局限于字符串参数
- 您可以接收调用的值,然后返回该值 立即发送到ActionScript(作为所做调用的返回值)
如果您的目标是Flash Player 8或更高版本,建议您通常使用
ExternalInterface
,我建议使用ExternalInterface over fscommand。我认为fscommand或多或少已被弃用
也就是说,您提到的fscommand是非阻塞的可能是正确的,因为ExternalInterface.call()是同步的,能够从被调用的外部函数返回值。我想可能会有一些情况,边缘情况,这可能有利于fscommand,但您可能需要测试它
我再次推荐ExternalInterface,它有许多fscommand没有的功能,比如在ActionScript和典型外部环境(网页中的JavaScript)之间保留数据类型和自动序列化/反序列化对象,而fscommand只发送字符串。在.NET应用程序中使用ExternalInterface,您可能需要自己解析XML-RPC(ExternalInterface在内部使用),我相信,但我不确定
fscommand(String, ...);
ExternalInterface.call(String, ...);