From e6ab87defa1f50c77bc5c4f1a0875b72853b904d Mon Sep 17 00:00:00 2001 From: h4ckx0r Date: Tue, 11 Feb 2025 13:58:10 +0100 Subject: [PATCH] "Vsync" simulado para evitar el shutering --- src/main/java/net/h4ckx0r/Arkanoid.java | 2 +- src/main/java/net/h4ckx0r/MiCanvas.java | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/h4ckx0r/Arkanoid.java b/src/main/java/net/h4ckx0r/Arkanoid.java index e6da411..3695e56 100644 --- a/src/main/java/net/h4ckx0r/Arkanoid.java +++ b/src/main/java/net/h4ckx0r/Arkanoid.java @@ -142,7 +142,7 @@ public class Arkanoid { for (Actor actor : actores) { actor.actua(); } - canvas.repaint(); + canvas.pintar(); } long tiempoTranscurrido = new Date().getTime() - tiempoInicio; diff --git a/src/main/java/net/h4ckx0r/MiCanvas.java b/src/main/java/net/h4ckx0r/MiCanvas.java index 19215fb..4dab207 100644 --- a/src/main/java/net/h4ckx0r/MiCanvas.java +++ b/src/main/java/net/h4ckx0r/MiCanvas.java @@ -3,11 +3,14 @@ package net.h4ckx0r; import net.h4ckx0r.actores.Actor; import java.awt.*; +import java.awt.image.BufferStrategy; import java.util.List; public class MiCanvas extends Canvas { List actores = null; + private BufferStrategy strategy = null; + private int[][] estrellitas = null; public MiCanvas(List actores) { @@ -24,9 +27,18 @@ public class MiCanvas extends Canvas { } } - @Override - public void paint(Graphics g) { - this.setBackground(Color.BLACK); + public void pintar() { + + if (this.strategy == null) { + this.createBufferStrategy(2); + strategy = getBufferStrategy(); + Toolkit.getDefaultToolkit().sync(); + } + + Graphics2D g = (Graphics2D) strategy.getDrawGraphics(); + + g.setColor(Color.BLACK); + g.fillRect(0,0, this.getWidth(), this.getHeight()); for (int[] estrella : estrellitas) { g.setColor(Color.GRAY); @@ -36,6 +48,8 @@ public class MiCanvas extends Canvas { for (Actor actor : actores) { actor.paint(g); } + + strategy.show(); }