我正在寻找一个代码,当此页面/标签没有聚焦或激活时,停止网页上的所有Flash动画。因为此问题会导致任何计算机性能下降。
任何使用As3或javascript的解决方案?
答案 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
}