TOP > Java>

ダブルバッファリング

説明

ダブルバッファリングとは画像を動かすときにチラつきを無くすためのテクニックです。
ダブルバッファリングを使用したアプレットと使用しないアプレットを下に表示しています。

ダブルバッファを使用しない例
ダブルバッファを使用した例

このようにダブルバッファを使用することによりチラつきを減らすことが出来ます。

ダブルバッファを使用したソースです。

//クラスのインポート
import java.applet.Applet;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.net.URL;
public class Daburu extends Applet implements Runnable {
        Image bu; //バッファ宣言
        Graphics bu_g;//グラフィック宣言
        int w;//画面に横サイズ
        int h;//画面の縦サイズ
        int a = 0;
        int b = 1;
        Dimension d;
        Image img1;
        Image img2;
        URL url;//URLを格納
        Thread th;
        public void init(){
             d = getSize();//サイズが入る
             w = d.width;
             h = d.height;
             if (bu_g==null){
                 bu=createImage(w,h);
                 bu_g=bu.getGraphics();
             }
             
             th = new Thread(this);
                 url = this.getDocumentBase();
                img1 = getImage(url, "hi.gif");//画像を格納
                img2 = getImage(url, "haikeig.gif");//画像を格納
                th.start();
        }
        public void paint(Graphics g){
            bu_g.drawImage(img2,0,0,this);
            bu_g.drawImage(img1,20,a,this);
            bu_g.drawImage(img1,50,a,this);
            
           //最後に画面に反映させます。
            g.drawImage(bu, 0, 0, this);//画面に反映
        }
        public void update(Graphics g) {
            paint(g);
        }

        public void run() {
            while(true){
                a = a + b;
                if(a>=150){
                     b = b * -1;
                }
                if(a<=0){
                     b = b * -1;
                }
                repaint();
                try{
                    th.sleep(6);
                }catch(InterruptedException e){
            
                }
            }
                
       }
}

最近の記事
当サイトについて  免責事項  プライバシーポリシー
Copyright (C) Sasuke 2012 All rights reserved.