Можно остановить их все, но потом сложнее их возобновить, в зависимости от того, как организован ваш код, используйте эту функцию, чтобы остановить все видеоклипы:
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
}