2014-05-06 27 views
0

我有一個AIR桌面遊戲,有背景音樂,並在主菜單中重複動畫。是否有內在的可能性告訴AIR容器,當窗口失去焦點時(例如,通過alt + tab或按下windows鍵),AIR容器然後暫停其容器的內容(暫停音樂和動畫/ frameHandlers等等。)?是否有內置的方法來暫停AIR桌面應用程序?

還是隻能通過一個一個停止所有內容,當再次獲得焦點,一個接一個地開始一切?

+0

後者。您必須在舞臺或「NativeApplication」上監聽「Event.ACTIVATE」和「Event.DEACTIVATE」,然後逐個停止所有操作,然後再重新啓動它們。 –

+0

認真?! AIR容器中不應該有這種功能嗎? T_T 無論如何,感謝您的幫助。 – user3432078

+0

Adob​​e不會自動執行任何操作。 Flash/AIR並不是一個簡單的SDK,有很多幫手和一切。它的意思是讓開發者完全控制的語言。不過想一想,他們會如何暫停呢?有多少人需要一個絕對靜態的屏幕,沒有聲音或任何東西?對於用戶來說,該應用會顯示爲凍結(技術上來說,這是)。另外,它不會與系統交互(即在OS X中滾動不活動的窗口)正確交互,並且實際上會違背大多數設計範例。 –

回答

2

@JoshJanusch說的是真實的 - 你必須自己管理它,雖然設置stage.frameRate可能會幫助你的情況。

大多數激活/停用我見過做經理以下一些:

  • 設置stage.frameRate 0.01(減慢動畫和ENTER_FRAME事件偵聽器,節省尤其是在移動CPU /電池)
  • 停止聲音(如果你玩一切聽起來通過一些SoundManager類,這可能是容易)
  • 管理您的setIntervalsetTimeout因爲他們是使用定時器,可繼續觸發
  • 考慮暫停任何其他異步活動(如網絡請求或背景Workers

隨意在評論中爲此列表提出建議。

+0

哦,這非常方便,非常感謝。爲什麼要將幀率設置爲0.01,是否有理由? – user3432078

+1

這是每個[文檔]最低的有效值(http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/display/Stage.html#frameRate)=) –

+1

這是一個很好的答案雖然將幀率設置爲0.01 *,但仍會導致動畫移動(例如,應該每秒移動1像素的動畫會每隔100秒移動1個像素)。你可能會想要處理。如果這是一款遊戲,無論如何,您應該有一個暫停菜單,您可以在「Event.DEACTIVATE」觸發時使用。 –

相關問題