2011-11-24 66 views

回答

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 
} 
相关问题