2011-11-20 9 views
5

バージョン10.1以降、Flash Playerには新しい「機能」があり、アプリケーションウィンドウが表示されていないときにプレーヤーのフレームレートが2 fpsに低下しました。これはパフォーマンスにとっては良いニュースですが、Timerクラスなどの一部の機能を無効にする可能性があります。フレックスウェブアプリケーション:ウィンドウが見えなくなってもフレームレートが低下しないようにする

私はタイマーを使ってカウントダウンを表示するアプリケーションを持っています。アプリケーションの性質上、Timerは、ユーザーが表示されていない場合でもカウントダウンを完了する必要があります。タスクを実行するためにユーザーにわずか10秒を与える必要があると想像してください。ユーザーがカウンターの途中でウィンドウを最小化すると、ウィンドウに戻るときに必要な時間がかかりますが、5秒間も残ります。これは、新しいフラッシュプレーヤーでは明らかに回避できません。

Airアプリケーションには、この動作を防ぐために設定できるbackgroundFrameRateプロパティがありますが、これはWindowedApplicationクラスの一部です。したがって、Webアプリケーションでは使用できないようです。ウィンドウが表示されていなくても一定のフレームレートを維持する方法を知っている人はいますか?ありがとう

+0

+1は、AIRアプリケーションのプロパティに関するコメントを追加します。私は存在していなかった。私はブラウザでこれを行う方法があったことにも驚くだろう。 – JeffryHouser

+0

Jayさん、可能な修正を試しましたか? – Ryan

+0

まだ、申し訳ありません。私は非常に忙しいですが、試してみるとすぐに見つけたものを投稿します。私はいくつかの簡単なテストを実行し、遅延を複製するのは苦労しました。おそらく、タイマーに影響を与えるフレームレートの低下について間違っていると私は信じています。いずれにせよ、私はそれをテストしようとしますが、ウィンドウアウトビューでフレームレートを測定する方法がわかりません(タイマーが影響を受けない場合)。私は賞金が最高得点で自動的に回答に与えられると思ったが、そうでない場合は、あなたが最初に返答したので回答を受け入れることができる。 – JayPea

答えて

1

埋め込みswfのwmodeパラメータをopaqueに設定すると、フレームレート調整ができなくなります。

ブライアン

0

私は自分自身を試していませんでしたが、多分あなたはフレームレートOnDeactivateのを強制しようとすることができます:

stage.addEventListener(Event.DEACTIVATE, onDeactivate); 

function onDeactivate (e:Event):void 
{ 
    //eg myFrameRate=24 
    stage.frameRate = myFrameRate; 
} 

が、この作品なら、私に教えてください。

+0

ありがとうございますこれをテストする機会がありましたが、すぐに私は賞金を授与します。両方の答えがうまくいけば、彼が最初に答えたので、私はブライアンにそれを与えるでしょう。 – JayPea

+0

@JayPea:賞品には問題ありません;-) – AsTheWormTurns

0

とテスト:

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は変更されません。フラッシュが表示されていないとき、明らかにあなたはFPSを設定することはできません

function onEnterFrame (e:Event):void { numer++; stage.frameRate = 30 } 

:FPSを設定する機能をonEnterFrame変更:ミスターブライアン・ビショップによって のwmode =不透明な溶液を試すことが明らかにすぎ

何かを動作しません!さて、あなたがあなたの問題の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

関連する問題