Actionscript 3 隐藏和显示swf时如何判断外部接口何时可用

Actionscript 3 隐藏和显示swf时如何判断外部接口何时可用,actionscript-3,flash,externalinterface,Actionscript 3,Flash,Externalinterface,我有一个swf,其中一些js回调是使用ExternalInterface注册的。我反复隐藏和显示swf,并且了解到当swf被隐藏时,ExternalInterface不可用。我还注意到,swfs构造函数每次再次显示时都会被调用,我使用它来确保在外部接口函数可用之前不会尝试调用它。这让我想知道,是否还有某种方法可以从swf内部可靠地判断它何时被隐藏?我知道as3类没有析构函数,但是在swf再次不可用之前,有没有类似的东西可以用来触发外部接口事件?从_阶段移除_似乎无助于检测到这一点,因为它根本不会

我有一个swf,其中一些js回调是使用ExternalInterface注册的。我反复隐藏和显示swf,并且了解到当swf被隐藏时,ExternalInterface不可用。我还注意到,swfs构造函数每次再次显示时都会被调用,我使用它来确保在外部接口函数可用之前不会尝试调用它。这让我想知道,是否还有某种方法可以从swf内部可靠地判断它何时被隐藏?我知道as3类没有析构函数,但是在swf再次不可用之前,有没有类似的东西可以用来触发外部接口事件?从_阶段移除_似乎无助于检测到这一点,因为它根本不会开火

顺便说一句,我使用了几种隐藏和显示的方法。有时使用angular的ng hide/ng show,有时swf在引导模式窗口内


另外,我注意到Flash Builder可以在某种程度上判断swf何时卸载。我可以添加一个按钮,在嵌入式
上设置“display:none”,然后在Flash Builder的控制台中获得[Unload SWF]消息。这只是调试播放器的一项功能,还是Flash Builder知道我还没有找到一些秘密事件?

您可以使用此代码检查SWF是否可以调用ExternalInterface:

if(ExternalInterface.available) {
    ExternalInterface.call("console.log","hello browser");
}

嗯,好问题。作为一种解决方法,您可以在隐藏事件之前手动将事件从JS发送到SWF。因此,不是外部接口不可用,而是swf不再运行/加载。你用的是什么浏览器?你能帮我摆弄一下小提琴吗?我用的是chrome,我只是在做flashPlayer.style.display='none';这就是立即卸载swf。嗯,有几种方法可以隐藏你的swf应用程序。可以显示:无,也可以设置可见性:隐藏。您也可以使用绝对鱼尾,并将其移出屏幕。在最后一种情况下,您还应该查看SWF的hasPriority参数。但我建议你看两个链接:是的,目前正在使用绝对位置离屏方法解决这个问题。忘记更新了,谢谢!