国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

使用MIDP2.0開(kāi)發(fā)游戲(6)設(shè)計(jì)Clock

2019-11-17 06:27:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  Clock負(fù)責(zé)提供一個(gè)真實(shí)時(shí)間和一個(gè)虛擬時(shí)間,真實(shí)時(shí)間從0開(kāi)始按ms遞增,和硬件時(shí)鐘是同步的;虛擬時(shí)間也從0開(kāi)始按ms遞增,但不一定和真實(shí)時(shí)間同步。

要獲得系統(tǒng)時(shí)間可以用System.currentTimeMillies(),系統(tǒng)硬件有一個(gè)PRogramming Gems 3"中的C++代碼,主要成員變量:
thisTime:當(dāng)前硬件時(shí)間,即System.currentTimeMillies()
systemTime:游戲的系統(tǒng)時(shí)間,即把thisTime轉(zhuǎn)換為從0遞增的時(shí)間
virtualTime:虛擬時(shí)間,從0遞增,但和真實(shí)時(shí)間不同步

代碼如下:

package game.engine.core;class Clock {    // Clock是否運(yùn)行:    private boolean running;    // 當(dāng)前hardware clock:    private int thisTime;    // record the last hardware clock when calling stop():    private int lastTime;    // systemTime從0開(kāi)始遞增,和硬件時(shí)鐘同步:    private int systemTime;    // systemOffset就是硬件時(shí)鐘和systemTime的差:    private int systemOffset;    // 上一次停止的systemTime:    private int pauseAt;    // virtualTime starts from 0.    private int virtualTime;    // virtualOffset records how long the clock paused:    private int virtualOffset;    private int frameStart;    private int frameEnd;    private int frameCount;    public Clock() {        reset();    }    // 重置Clock:    public void reset() {        running = false;        // get the hardware clock:        thisTime = (int)System.currentTimeMillis();        lastTime = thisTime;        // and systemTime starts from 0:        systemTime = 0;        systemOffset = thisTime;        pauseAt = 0;        // init virtual time:        virtualTime = 0;        virtualOffset = 0;        // init frame time:        frameStart = 0;        frameEnd = 0;        frameCount = 0;    }    // 同步hardware clock:    private void update() {        lastTime = thisTime;        thisTime = (int)System.currentTimeMillis();        // increase the systemTime:        systemTime += (thisTime - lastTime);    }    // 啟動(dòng)Clock:    public void start() {        if(!running) {            running = true;            update();            virtualOffset += (systemTime - pauseAt);            System.out.println("[start]");        }    }    // 停止Clock:    public void stop() {        if(running) {            running = false;            update();            pauseAt = systemTime;            System.out.println("[stop] at " + pauseAt);        }    }    // Clock是否運(yùn)行:    pu


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 合山市| 宁化县| 漯河市| 汶上县| 双辽市| 札达县| 南平市| 建昌县| 措勤县| 鹤峰县| 沛县| 彭泽县| 台南市| 柘城县| 河西区| 都江堰市| 嘉善县| 亚东县| 诏安县| 深圳市| 扎鲁特旗| 法库县| 隆安县| 治多县| 顺平县| 柘荣县| 德安县| 修武县| 韩城市| 长垣县| 桑植县| 宁德市| 容城县| 乐亭县| 洛扎县| 宜都市| 成都市| 迁安市| 乡宁县| 壶关县| 广丰县|