我有一个使用ExternalInterface注册了一些js回调的swf。我反复隐藏并显示swf,并且我知道当swf被隐藏时,ExternalInterface不可用。我还注意到swfs构造函数每次再次显示时都会被调用,我曾经用它来确保在它可用之前我不会尝试调用ExternalInterface函数。这让我想知道是否还有一些方法可以从swf内部可靠地告知它何时被隐藏?我知道as3类没有析构函数,但是在swf再次不可用之前是否有类似的东西用于触发ExternalInterface事件? REMOVED_FROM_STAGE似乎没有帮助检测到它,因为它根本不会发射。
我正在使用几种隐藏和显示btw的方法。有时使用angular的ng-hide / ng-show,有时swf在bootstrap模态窗口内。
另外,我注意到Flash Builder可以以某种方式告诉swf何时卸载。我可以在嵌入式<object>
上添加一个设置'display:none'的按钮,然后在Flash Builder的控制台中显示[Unload SWF]消息。这只是调试播放器的一个功能,还是Flash Builder知道我还没有找到一些秘密事件?
答案 0 :(得分:1)
您可以使用此代码检查SWF是否可以调用ExternalInterface:
if(ExternalInterface.available) {
ExternalInterface.call("console.log","hello browser");
}