测试:
private var numer:int = 0;
private var prevNumer:int = 0;
private var timer:Timer = new Timer( 1000, 0 )
[...]
var tf:TextField = new TextField ();
addChild (tf);
addEventListener ( Event.ENTER_FRAME, onEnterFrame )
timer.addEventListener (TimerEvent.TIMER, onTimer )
timer.start()
function onTimer ( e:TimerEvent ):void
{ tf.appendText (' ' + (numer - prevNumer)); prevNumer = numer;}
function onEnterFrame ( e:Event ):void { numer++ }
清楚地表明,当您看到闪光灯时,tf 会附加等于您的 FPS 的数字。如果计时器将与 FPS 一起更改,则在最小化窗口时您不会看到差异。但是,回来你会看到 2 2 2 2 2,也就是 FPS 下降到 2。
AsTheWormTurns 的 onDeactivate 解决方案不起作用。事件被触发,但 fps 没有改变。Brian Bishop 先生的 wmode=opaque 解决方案也不起作用
一些显而易见的尝试:更改 onEnterFrame 函数以设置 FPS:
function onEnterFrame ( e:Event ):void { numer++; stage.frameRate = 30 }
显然,当闪光灯不可见时,您无法设置 FPS!好吧,除非您将其设置为 1,否则您无法设置 FPS。
解决您的问题的方法很简单,只需制作另一个与上述类似但附加条件的计时器:
function onTimer ( e:TimerEvent ):void {
if ( numer - prevNumer == 2 ) adjustOriginalTimer();
tf.appendText (' ' + (numer - prevNumer)); prevNumer = numer;
}
E:您可以在这里阅读:http: //help.adobe.com/en_US/as3/mobile/WS4bebcd66a74275c36cfb8137124318eebc6-8000.html