テスト:
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は変更されません。ブライアンビショップ氏による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