簡體   English   中英

Java Applet使用雙緩沖區閃爍

[英]Java applet flickering with double buffer

我正在做側滑游戲。 為了防止游戲中出現閃爍,我開始使用后緩沖來獲得更流暢的圖形。 它解決了大多數問題,但是,如果我將角色移動足夠長時間,屏幕就會開始閃爍。 我在這里閱讀了有關該問題的信息,但未詳細說明如何解決此垂直消隱間隔。 我知道,這實際上並不是“忽悠”,而是隨着新的塗在舊的上而更加“撕裂”。 有什么辦法可以避免這種“撕裂”?

謝謝!

我本來會在評論中回答的,但是對此有太多細節。 以下代碼幾乎完全取自一個applet,在該applet中,我必須以與現在相同的方式來限制FPS(除非它位於mouseMove而不是keyPressed上)。

private long lastDrawTime = 0;

public void keyPressed(KeyEvent e) {
    if (Calendar.getInstance().getTimeInMillis() - lastDrawTime < 20) return;
    //do whatever needs to be done before redrawing
    draw();
    lastDrawTime = Calendar.getInstance().getTimeInMillis();
}

這里發生的是,有一個實例變量lastDrawTime存儲上次重繪發生的時間。 將此變量與在發生任何繪圖之前觸發keyPressed事件的當前時間進行比較。 如果時間差小於允許的間隔(在這種情況下為20毫秒或每秒50幀),則該函數將返回,並且不進行繪制或更新。 但是,如果經過了足夠的時間,則所有正常的工作都已完成,並且當前時間存儲在變量中。

您需要實現獨立於可變FPS的恆定游戲速度。 本文詳細介紹了如何執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM