Wie stoppe ich das Auto-Repaint (), wenn ich die Größe des Jframe @ änder

Ich lerne immer noch Java, wenn mir jemand helfen kann, werde ich sehr glücklich sein!

Sorry für schlechtes Englisch, ich bin Spanisch! Ich mache ein Kachelspiel, das Spiel verwendet die klassische "Spielschleife", die die Engine auf 60 fps begrenzt. Das funktioniert gut! Aber.

Das Problem ist, dass das Repaint-Ereignis aufgerufen wird, wenn die Größe des JFrame geändert oder maximiert wird! Wenn zum Beispiel der JFrame maximiert / verkleinert ist, wird das Spiel mit 10000 fps gerendert, aber wenn dies nicht der Fall ist, wird das Spiel mit der von mir festgelegten Geschwindigkeit gerendert. Es gibt also eine Möglichkeit, das automatische Repaint zu deaktivieren und es NUR dann zum Laufen zu bringen, wenn "component.repaint () "wird von meinem Code aufgerufen?

Das Problem ist hier nicht die "Spieleschleife", das Problem ist, dass das Repaint automatisch aufgerufen wird, wenn die Größe geändert / maximiert wird, um das Spiel mit mehr fps zu rendern!

public class Handling {
static private int fps=0;
static private int fpsfinal=0;
static int frames = 60;
static int frames_skip = 1000 / frames;
static long ticknext = GetTickCount();
static long ticksleep = 0;

public static void Run() {
    for(;;){
        Main.getDevice().repaint();
        fps++;
        ticknext += frames_skip;
        ticksleep = ticknext - GetTickCount();
        if(ticksleep >= 0) {
            try {
                Thread.sleep(ticksleep);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public static long GetTickCount(){
    return System.currentTimeMillis();
}

public static int GetFPS(){
    fpsfinal=fps;
    fps=0;
    return fpsfinal-2;
}

import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.ImageObserver;

import javax.swing.*;
public class Game extends JPanel{
private static final long serialVersionUID = 1L;
static boolean dir=true;

@Override 
public void paintComponent(Graphics g){
    super.paintComponent(g);        
    int layout=Main.layout;
    Graphics2D g2d = (Graphics2D) g;
    g.setFont(Resources.GetFont(0));    
    Camera.UpdateCameraAxis();
    Camera.DoCamera();
    Cursor.MouseLoop(); 
    if (layout==0){
        this.setBackground(new Color(210,247,255));
        for(int xx=Math.max( etc....

Antworten auf die Frage(2)

Ihre Antwort auf die Frage