Тестирование с:
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.
Решение OnDeactivate от AsTheWormTurns не работает. Событие запускается, но fps не изменяется.
wmode = непрозрачное решение мистера Брайана Бишопа тоже не работает
что-то очевидное, чтобы попробовать: измените функцию onEnterFrame, чтобы установить FPS:
function onEnterFrame ( e:Event ):void { numer++; stage.frameRate = 30 }
Очевидно, вы не можете установить FPS, когда вспышка не видна! Ну, вы не можете установить FPS, если не установите его на 1.
Обойти вашу проблему просто, просто сделайте еще один таймер, аналогичный приведенному выше, но с дополнительным условным условием:
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