Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > простенький апплет - тетрис


Автор: inohodec 4.11.2008, 12:04
Всем привет

Решил написать простенький апплет - тетрис
Самый элементрный smile

И столкнулся с проблемой - double buffering

У меня есть картинка - поле и по ней двигаются фигурки
Заметил что чем сложнее рисунки тем больше мельканий 
Читал про buffering но так и не понял как я его могу применить у себя к чему именно

Вот мой код, помогите применить правильно buffering

Код

import java.applet.*;
import java.awt.*;

public class AnimApplet extends Applet implements Runnable {
    Image[] images = new Image[3];
    int frame;
    int x, y, x1=200, y1=200 ;
    volatile Thread thread;

    public void init() {
     images[0] = getImage(getDocumentBase(), "board.gif");
     images[1] = getImage(getDocumentBase(), "image_2.gif");
        images[2] = getImage(getDocumentBase(), "image_1.gif");     
    }
    
    public void start() {
        (thread = new Thread(this)).start();
    }
    
    public void stop() {
        thread = null;
    }
    
    public void paint(Graphics g) {   
     g.drawImage(images[0], x, y, this);
     g.drawImage(images[1], x1, y1, this);
        g.drawImage(images[2], 0, 0, this);       
    }
    
    public void run() {
        int delay = 1000; 
        try {
            while (thread == Thread.currentThread()) {
             x += 10;
             y += 10 ;
             x1 -= 10;
             y1 -= 10;
                repaint();
                Thread.sleep(delay);
            }
        } catch (Exception e) {
        }
    }
}

Автор: leskar 4.11.2008, 14:04
Есть такой классик интересный MediaTracker называется. Поищите примеры его использования. Возможно, это то, что Вам нужно.

Автор: Keyo 4.11.2008, 15:37
а по моему нужно использовать свинг, а не авт... т.е. JApplet и вообще все остальное из javax.swing

Автор: inohodec 4.11.2008, 17:41
Ок, всем спасибо за советы
Буду пробовать smile

Автор: Keyo 4.11.2008, 17:48
В Swing реализована двойная буферизация, и включается/отключается просто вызовом метода setDoubleBuffered(boolean flag) соответствующего компонента. В то время как в AWT этого нет...
При чем isDoubleBuffered() == true по умолчанию
Поправьте если не прав.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)