当窗口/标签未聚焦时,停止所有闪光动画

时间:2011-11-24 01:04:12

标签: javascript performance flash actionscript-3

我正在寻找一个代码,当此页面/标签没有聚焦或激活时,停止网页上的所有Flash动画。因为此问题会导致任何计算机性能下降。

任何使用As3或javascript的解决方案?

1 个答案:

答案 0 :(得分:2)

可以将它们全部停用,但之后根据代码的组织方式更难恢复它们,使用此功能停止所有影片剪辑:

function stopEverything(disp : DisplayObjectContainer) : void
{
    if(disp is MovieClip)
    {
        MovieClip(disp).stop();
    }
    for(var i : int = 0; i < disp.numChildren; i++)
    {
        var child : DisplayObject = disp.getChildAt(i);
        if(child is DisplayObjectContainer)
        {
            stopEverything(DisplayObjectContainer(child));
        }
    }
}

然后停止你要做的所有对象:stopEverything(stage);

请注意,这只是停止MovieClip动画,所有的EnterFrame事件仍会被调用。

另一个智能选项是验证应用程序是否失去焦点,然后执行stage.frameRate = 1;,再次获得焦点后,您可以将其设置回原来的状态。

stage.addEventListener(Event.DEACTIVATE, lostFocus);
stage.addEventListener(Event.ACTIVATE, gainedFocus);

function lostFocus(e:Event):void
{
    stage.frameRate = 1;
}

function gainedFocus(e:Event):void
{
    stage.frameRate = 24; // or whatever it should be
}