나는 매 10 초 지연 간격 후에 동일한 이미지의 새로운 이미지를 화면에 페인트하려고합니다. 나는 나 자신을 알아 내려고 노력해 왔고 나는 또한 사물을 보았지만 도움이되는 것을 찾을 수 없었다.지연된 후에 새 이미지를 얻으려면 어떻게해야합니까?
내 구체적인 문제는 원본 이미지를 사용하여 새 이미지를 페인트하는 방법을 모르겠다는 것입니다. 10 초마다 새로운 이미지가 나타나야하고, ID 배열 다음에 ID 배열 (IDx [0] = x; IDx [0] = y;)을 따르는 ID 배열을 시작하려고합니다.
일반 g 새로운 이미지/봇을 그릴 때마다 그래픽 이미지의 .drawImage가 없어지는 것을 막을 수 있습니다. 그러나 목표는 자동적 인 방식으로 동일합니다.
내 창 :
package pack;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Window extends JPanel implements Runnable {
public static final int GAME_WIDTH = 512;
public static final int GAME_HEIGHT = GAME_WIDTH * 3/4;
public static final int SCALE = 2;
public static Image Player = Controls.Player;
public static Image BB = ImageLoader.BB;
public static Image Grass = ImageLoader.Grass;
public static boolean painting = true;
public static boolean Start = true;
public static boolean Menu;
public static boolean ONhs;
public static boolean OFFhs;
public void paint(Graphics g) {
super.paintComponent(g);
g.setColor(Color.GREEN);
g.drawString("UPS: " + Integer.toString(UPS.ups), 100, 120);
g.drawString("FPS: " + Integer.toString(UPS.fps), 100, 130);
// // MENU ////
if (Menu) {
Image Grass = ImageLoader.Grass;
Image onHoverStart = ImageLoader.onHoverStart;
Image offHoverStart = ImageLoader.offHoverStart;
g.drawImage(Grass, GAME_WIDTH * SCALE/4, GAME_HEIGHT * SCALE/6, null);
if (ONhs) {
g.drawImage(onHoverStart, 400, 250, null);
} else {
g.drawImage(offHoverStart, 400, 250, null);
}
}
// // STARTED // //
if (Start) {
Image Player = Controls.Player;
Image BB = ImageLoader.BB;
g.drawImage(BB, PlayerData.BBDirectionx, PlayerData.BBDirectiony, null);
g.drawImage(ImageLoader.Bot[0], Mob.BotxSELF - 32, Mob.BotySELF - 25, null);
g.drawImage(ImageLoader.Bot[1], Mob.BotxSELF - 32, Mob.BotySELF - 25, null);
g.drawImage(Player, Controls.Playerx - 45, Controls.Playery + 5, null);
}
}
@Override
public void run() {
while (painting) {
UPS.fpstick = UPS.fpstick + 1;
repaint();
try {
Thread.sleep(12);
} catch (InterruptedException e) {
}
}
}
public static void draw(Graphics g) {
g.drawImage(ImageLoader.Bot[0], 32, 25, null);
}
public Window() {
JFrame jf = new JFrame();
JPanel panel = new JPanel(new BorderLayout());
Controls c = new Controls("Window using Controls for Listener");
panel.add(this);
this.setPreferredSize(new Dimension(GAME_WIDTH * SCALE, GAME_HEIGHT * SCALE));
this.setMinimumSize(new Dimension(GAME_WIDTH * SCALE, GAME_HEIGHT * SCALE));
this.setMaximumSize(new Dimension(GAME_WIDTH * SCALE, GAME_HEIGHT * SCALE));
this.setBackground(Color.DARK_GRAY);
jf.setContentPane(panel);
jf.pack();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(GAME_WIDTH * SCALE, GAME_HEIGHT * SCALE);
jf.setVisible(true);
jf.setResizable(false);
jf.addKeyListener(c);
jf.addMouseListener(c);
jf.addMouseMotionListener(c);
}
}
도움말 아주 많이 감사합니다!
죄송합니다. 일부 물건을 교체 한 후에 paint()를 paintComponent()로 변경하지 않았습니다. 대부분의 실수는 테스트 물건에서 비롯됩니다. 나는 더 많은 것들을 시도하고 내 솔루션을 게시 할 것입니다. .. 나는 그것을 찾는다. ^^ –