Flash:从浏览器中的另一个标签页返回时,Flash是否可以侦听某种返回标签页事件?

时间:2020-03-06 14:33:00  来源:igfitidea点击:

我有这个Flash应用程序,我们可以在其中观看视频时单击一个链接。它将打开一个新标签并暂停视频。现在,当我们返回Flash应用程序时,如果视频再次开始播放,那就太好了。有没有办法做到这一点?

解决方案

Flash可能不是一成不变的方法,但是我们可能会遇到纯JavaScript带来的运气,并且可以与Flash Movie进行通信。我建议我们玩一下Window的onFocus事件。

我以前从未使用过它,因此它可能不会在任何/所有浏览器上触发。

这在FF3中有效。这不是有效的代码,但对我们来说却是垫脚石:

<html>
    <head></head>
    <body onFocus="alert('testing');"></body>
</html>

这也确实很烦人,因为单击确定,然后单击警报,重新触发焦点。 Control + W将为我们关闭选项卡,并允许我们中断循环。

当焦点进入和离开播放器时,Flash Player会发出激活和停用事件。我们可能会使用它们,但它们仅限于Flash内容焦点更改时,而不是页面焦点更改时。

在这里看看blog.flexaxamples.com,以了解如何使用Flash激活和停用事件。

我想我已经这样解决了:

我在舞台上监听了mouse_leave事件,因为当我们在另一个标签页中时,鼠标会离开舞台。 (或者至少,我们必须单击一个选项卡才能返回到Flash,因此我们总是会在Flash之外)。当我们离开舞台时,会将stageLeave布尔值设置为true。

然后,我有另一个事件侦听器mouse_move,它将stageLeave布尔值设置为false(当为true时),并调度一个自定义的STAGE_RETURN事件。

这里唯一的注解是,我们必须在舞台上用鼠标移动才能再次播放视频。但这还是我们将要做的事情。

一种更清洁的方法是使用一些类似的方法:

stage.addEventListener( Event.ACTIVATE, playMovie );
stage.addEventListener( Event.DEACTIVATE, pauseMovie );