Обновление картинки
| |
grim122ua | Дата: Четверг, 02 Октября 2014, 22:32 | Сообщение # 1 |
уже был
Сейчас нет на сайте
| Добрый день, столкнулся со следующей проблемой:вместо того что-бы рисовать картинку с новой позицией, делается ее дубликат, как быть? Код package pkg2dengine;
import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.Timer;
public class Main extends JFrame implements ActionListener{ Timer mainTimer = new Timer(20, this);
Image image; Image image2; BufferedImage bigImg;
private int p_frame = 0;
final int width = 32; final int height = 32; final int rows = 5; final int cols = 5; BufferedImage[] sprites = new BufferedImage[rows * cols];
public Main() throws IOException{ this.setTitle("2D Engine Test"); this.setSize(640,480); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);
mainTimer.start();
bigImg = ImageIO.read(new File("src\\res\\char3.png")); for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { sprites[(i * cols) + j] = bigImg.getSubimage( j * width, i * height, width, height ); } }
addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent evt) { switch (evt.getKeyCode()) { case KeyEvent.VK_UP: break; case KeyEvent.VK_DOWN:
break; case KeyEvent.VK_LEFT:
break; case KeyEvent.VK_RIGHT: if(p_frame < 4) p_frame += 1; else p_frame = 0; System.out.println("sda"); break; } } }); }
/*public void paint(Graphics g){ //g.drawString("Paint this!", 150, 100); ImageIcon i2 = new ImageIcon("char1.png"); image2 = i2.getImage(); int w = image2.getWidth(null); int h = image2.getHeight(null); g.drawImage(image2, 0, 0, 64, 64, 64, 64, 64, 64, null); //1(2) - положение, 2(2) - размер,
}*/
//The above line throws an checked IOException which must be caught.
int plus = 0;
//Image img = new ImageIcon("src\\res\\H.png").getImage(); //@Override public void paint(Graphics g){ g = (Graphics2D) g; g.drawImage(sprites[p_frame], 0, 50+plus, 64, 64, null); // if(p_frame < 4) p_frame += 1; else p_frame = 0; plus += 3; System.out.println("update"); }
public static void main(String[] args) throws IOException{ new Main(); }
@Override public void actionPerformed(ActionEvent e) { repaint(); }
}
Скрин:
Сам спрайт:
Сообщение отредактировал grim122ua - Четверг, 02 Октября 2014, 22:33 |
|
| |
FadeBaker | Дата: Пятница, 03 Октября 2014, 03:18 | Сообщение # 2 |
JavaSE Game Developer
Сейчас нет на сайте
| Проверь, точно ли вызывается метод actionPerformed.
Неправильно преобразовываешь. Так нужно: Код Graphics2D g2d = (Graphics2D) g;
Уроки по GM Minecraft 2D на GM — Мои проекты — Blood Harvest [2D] — Original Blood Harvest [2D]: Remastered Edition Adventure Craft [2D] — Sandbox Space Shock [2D] — Scroll Shooter Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
|
|
| |
grim122ua | Дата: Пятница, 03 Октября 2014, 22:15 | Сообщение # 3 |
уже был
Сейчас нет на сайте
| Нет, не в этом дело. Проблема уже решилась. Код import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.Timer; public class Main extends JFrame implements ActionListener { boolean auto = true; boolean go = !false; Timer mainTimer = new Timer(100, this); Image image; Image image2; BufferedImage bigImg; private int p_frame = 0; final int width = 32; final int height = 32; final int rows = 5; final int cols = 5; BufferedImage[] sprites = new BufferedImage[rows * cols]; protected int Y; protected int X; public Main() throws IOException { this.setTitle("2D Engine Test"); this.setSize(640, 480); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); if (auto) mainTimer.start(); bigImg = ImageIO.read(new File("char3.png")); for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { sprites[(i * cols) + j] = bigImg.getSubimage(j * width, i * height, width, height); } } addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent evt) { System.out.println(evt.getKeyCode()); switch (evt.getKeyCode()) { case KeyEvent.VK_Z: auto = !auto; if (auto) mainTimer.start(); else { mainTimer.stop(); } break; case KeyEvent.VK_X: go = !go; break; case KeyEvent.VK_SPACE: Y = 0; X = 0; break; case KeyEvent.VK_UP: Y = -1; repaint();// increase speed break; case KeyEvent.VK_DOWN: Y = 1; repaint();// increase speed break; case KeyEvent.VK_LEFT: X = -1; repaint();// increase speed break; case KeyEvent.VK_RIGHT: X = +1; // p_frame = (p_frame + 1) % 4; repaint();// increase speed break; } } }); } int plus = 0; private int plusV; // Image img = new ImageIcon("res\\Hero.png").getImage(); @Override public void paint(Graphics g) { // super.paint(g); g = (Graphics2D) g; g.clearRect(100, 150, 164, 164); g.drawImage(sprites[p_frame], 100, 150, 164, 164, null); g.clearRect(0 + plus, 50 + plusV, 64, 64); g.drawImage(sprites[p_frame], 0 + plus, 50 + plusV, 64, 64, null); g.clearRect(310, 50, 64, 64); g.drawImage(sprites[p_frame], 310, 50, 64, 64, null); g.drawImage(sprites[p_frame], 210, 50, 64, 64, null); if (go) p_frame = (p_frame + 1) % 4; plus += 3 * X; plusV += 3 * Y; System.out.println("update " + p_frame); } public void actionPerformed(ActionEvent e) { repaint(); } }
|
|
| |
|