2011-11-20 33 views
5

因此,自10.1版以來,Flash Player中新增了一項「功能」,當應用程序窗口不可見時,該功能將播放器的幀速率降低至2 fps。這對性能來說是個好消息,但它可能會破壞一些功能,例如Timer類。Flex網頁應用程序:當窗口不可見時,防止幀速下降

我有一個應用程序使用計時器來顯示倒計時。鑑於應用程序的性質,即使用戶不在其中,也需要定時器完成倒計時。想象一下,你需要給用戶10秒才能完成一項任務。如果用戶在窗口中途將窗口最小化,他們可以花費盡可能多的時間,並且當他們返回窗口時仍然有5秒鐘時間。這對於新的Flash播放器來說顯然是不可避免的。

在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

謝謝,我沒有有機會測試這個,但我會盡快獎勵賞金。如果兩個答案都有效,我會先給Brian回答。 – 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.

on由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

相關問題