Остановите все флэш-анимации, когда окно / вкладка не сфокусированы - PullRequest
1 голос
/ 24 ноября 2011

Я ищу код, чтобы остановить все флеш-анимации на веб-странице, когда эта страница / вкладка не сфокусирована или не активна.Потому что эта проблема вызывает потерю производительности на любом компьютере.

Любые решения с As3 или JavaScript?

1 Ответ

2 голосов
/ 24 ноября 2011

Можно остановить их все, но потом сложнее их возобновить, в зависимости от того, как организован ваш код, используйте эту функцию, чтобы остановить все видеоклипы:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...