1. 程式人生 > >Java Gui中解決遊戲閃爍的初級方案(雙緩衝技術)

Java Gui中解決遊戲閃爍的初級方案(雙緩衝技術)

在Java中,需要呼叫paint()方法將你所想要的東西畫在你自己定義好的LaunchFrame()裡面。但是如果每一次都立刻將Paint()方法裡面的東西畫到LaunchFrame()上,由於每一塊顯示卡承受重新整理頻率的能力強弱不一樣,所以很容易就出現了閃爍現象,現記錄一種我最開始學習解決遊戲閃爍現象的初級解決方案-----------雙緩衝技術。

Java中可以利用repaint()方法進行遊戲資料修改之後的重畫,底層還需經過呼叫update(),所以我們可以重寫update()方法來實現雙緩衝技術,程式碼如下:

	public void update(Graphics g) {
		if (offScreenImage == null) {
			offScreenImage = this.createImage(GAME_WIDTH, GAME_HIGHT);
		}
		Graphics goffScreen = offScreenImage.getGraphics();// 重新定義一個畫虛擬桌布的畫筆//
		Color c = goffScreen.getColor();
		goffScreen.setColor(Color.darkGray);
		goffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HIGHT);
		goffScreen.setColor(c);
		paint(goffScreen);
		g.drawImage(offScreenImage, 0, 0, null);
	}

paint()方法中傳的畫筆是goffScreen,再呼叫paint()方法將畫在goffScreen的東西全部顯示出來。

開一個執行緒,Sleep一段時間執行repaint()方法
	private class PaintThread implements Runnable {
		public void run() {
			while (true) {
				repaint();
				try {
					Thread.sleep(100);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}

這樣就可以消除一些初級的閃爍現象。

相關推薦

Java Gui解決遊戲閃爍初級方案緩衝技術

在Java中,需要呼叫paint()方法將你所想要的東西畫在你自己定義好的LaunchFrame()裡面。但是如果每一次都立刻將Paint()方法裡面的東西畫到LaunchFrame()上,由於每一塊顯示卡承受重新整理頻率的能力強弱不一樣,所以很容易就出現了閃爍現象,現記錄

java,枯燥遇見美麗JFrame,窗體面板,JPanel

image title lose add src out center public xtend package com.company; import javax.swing.*; import java.awt.*; public class Main exten

java,枯燥遇見美麗JFrame,窗體滾動面板JScrollPane

package com.company; import javax.swing.*; import java.awt.*; public class Main extends JFrame { Main(){ setBounds(100,100,500,300);

java專案index頁的動態替換maven-war-plugin

利用maven佔位符進行動態更換配置內容,實現index頁面的動態替換(在打包時根據不同的部署環境,生成不同的web.xml檔案): 1.在pom檔案配置外掛: <plugin> <groupId>org.apa

Spring Cloud 升級Finchley.SR2穩定版本詳細方案12福利

                                 升級攻略 1.升級必讀    &nb

java多執行緒-生產者與消費者模型有限緩衝問題

文章目錄 @[toc] 1.預備知識點 2.問題描述 3.java實現方式的預備知識 4.實現 1.預備知識點 執行緒同步 同步就是協同步調,按預定的先後次序進行執行。如:你說完,我再說。“同

oracle資料量650G的表有分割槽資料刪除方案分割槽交換技術

背景:650G的流程已辦記錄表太大,用delete刪除的話肯定是刪不動的,然後因為這個大表肯定是建了分割槽的,所以打算使用分割槽交換技術。具體SQL如下:------------------執行指令碼之前需要用資料泵把BPMS_RU_DONE_TASK匯出來---------

ubuntu提示找不到make命令的解決方案command not found

這篇微博轉載自http://blog.csdn.net/fenglibing/article/details/7096556,感謝博主。 第一種方式:利用安裝盤修復 今天遇到一ubuntu,別人剛裝的,我下載了ncftp,準備從其它地方把檔案搬過來,把 ncftp下載

如何正確且高效實現OSSIM文化的解決方案圖文詳解

       前言      對於玩OSSIM的初學者或者中級水平的從業人員來說,都有一定必要性從中文看起,當然,最終還是英文的目標邁進,只是說,為了讓自己更快速上手!      雖然系統說明支援中文,實際上,只是臺灣的繁體中文而已。為此,對於我們大陸從小使用簡單體的中文而言,就很有必要性

使用poi實現java讀取excel表格並存儲到資料庫解決讀取日期格式問題ssm框架

本文是在搭完ssm框架之上實現的讀取excel檔案,已實現功能,如有問題可在評論區詢問使用的jar包<!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency>

java配置檔案的讀取寫入的解決方案getResourceAsStream的用法

1,首先,Java中的getResourceAsStream有以下幾種:1. Class.getResourceAsStream(String path) : path 不以’/'開頭時預設是從此類所在

vim配色主題在tmux顯示異常解決方案macOS+iterm2+zsh

環境 分析 解決 環境 macOS + iterm2 + zsh + tmux vim的solarized和molokai主題在tmux中開啟時,顏色異常 分析 iterm2中

java GUIJTextField的requestFocus()方法獲取不到焦點

眾所周知,JFrame.pack()方法為適應螢幕大小的方法,所以,requestFocus()方法必須要在pack()方法之後呼叫,不然就會失效。 下面說說我經常用到的java gui中的一些方法吧! 1.JPanel.setBorder(BorderFactory.cr

NopCommerce 事務解決方案測試文檔

spa nop 模擬 comm nbsp 接口設計 opc 實體 com 首先我們先看數據庫中的數據表(Forums_Group)表的數據 然後我們開始測試,首先不用事務插入,測試代碼: 測試結果: 表數據: 接下來我們模擬一個錯誤,依然不用事

day20 java 語言的讀取寫入數據

day20 java 語言中的讀取寫入數據(一)day20 java 語言中的讀取寫入數據(一)一、io概述 io數據流的讀寫功能,在實際的生活中也很常見,比如文件的上傳、下載,日誌的自動更新等都與io讀寫密切相關。io又被分為了讀取數據和寫入數據兩個大的功能。下面就來看看讀取數據的幾種類。二、讀取

day21 java 語言的讀取寫入數據

day21 java 語言中的讀取寫入數據(二)day21 java 語言中的讀取寫入數據(二)一、概述: 使用IO流寫文件,就體現的是下載的功能。所以說很有必要單獨說一下。二、寫入功能:(下載) 寫入功能同樣也是被分隔為了字符流寫入和字節流寫入兩個方式。 (一):字符流寫入數據

ubuntu18.04 沒聲音解決方案坑自己版

回放 font ubunt ubuntu all sudo 是我 打開 開發 那啥,半個月沒開電腦了,這幾天打開發現系統沒聲了 那咋辦呢,修一修唄 搜索了下問題,還挺簡單的 1 jiang@ryzen:~$ sudo apt install pavucontrol 打開

Linux下,Java圖形介面程式中文顯示不正常顯示為方格問題解決

RedHat或其它Linux系統下中文顯示為方格,原因是JRE環境中中文字型設定異常。 1.首先找到JRE所在的目錄,如在RedHat Enterprise 6中的目錄為:/usr/lib/jvm/java-1.6.0/jre 2.將windows中文字型simsun.ttf或simsun.ttc拷

轉 Android SDK Manager國內無法更新的解決方案親測有效

轉自 Android SDK Manager國內無法更新的解決方案(親測有效) 現在由於GWF,google基本和咱們說咱見了,就給現在在做Android 或者想學習Android 的朋友帶來了諸多的不便,最簡單的就是Android SDK Manager 你無法更新了。 現在這裡有一

解決tomcat日誌cataline.out過大問題切換用log4j

1、準備jar包和檔案 裡面包含:tomcat-juli.jar,tomcat-juli-adapters.jar,log4j-1.2.17.jar,log4j.properties四個檔案 2、將log4j.jar 和 tomcat-juli-adapters.ja