天天看點

《Java 2D遊戲程式設計入門》—— 1.1 使用FrameRate類

本節書摘來異步社群《java 2d遊戲程式設計入門》一書中的第1章,第1.1節,作者:【美】timothy wright(萊特),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

framerate類位于javagames.util包中。本書中所開發的工具代碼都會放到這個工具包中,随後,我們将把這個包變成一個工具庫。這個類用來測量本書中所開發的應用程式的每秒的幀數(frames per seconds,fps)。fps按照“fps 100”的格式存儲為一個字元串。每秒鐘都會計算這個值。

在開始測量幀速率之前,需要先調用initialize()方法。這個方法把幀速率字元串初始化為0,并且把最近時間初始化為目前時間(以毫秒為機關)。

system.currenttimemillis() 調用傳回了從1970年1月1日午夜開始的毫秒數。不同的作業系統,測量時間的精度可能不同。例如,一些windows版本隻能保證10毫秒的精度。

對于每一個渲染的幀,都應該調用一次calculate()方法。要計算幀速率,從最近時間減去目前時間,并且将其存儲到delta變量中。每一幀中幀計數都會增加,并且當delta時間超過一秒的時候,會産生新的fps。delta變量很少确切地等于1秒鐘,是以從delta變量減去1000毫秒,以略去額外的毫秒數。一旦儲存了新的幀速率,就會重置幀計數并且再次開始處理。