Hey Leute,
ich hab ein Frame auf dem ein Panel liegt mit ner Hintergrundgrafik und ner Figur dadrauf... Möchte die figur nun bewegen...hier der Code erstmal:
funktioniert auch alles soweit... jedoch wartet er in dem Fall beim Anlaufen einmal kurz und rennt dann los... Und ich kann z.B in dem Fall keine anderen Tasten mehrdrücken...
jemand eine Idee wie ichs anders angehen kann?
gesammter code:
Main:
Player:
ich hab ein Frame auf dem ein Panel liegt mit ner Hintergrundgrafik und ner Figur dadrauf... Möchte die figur nun bewegen...hier der Code erstmal:
Java:
window.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
// links
if (keyCode == 37) {
player.setLocation(player.getX() - 10, player.getY());
}
// springen
if (keyCode == 38) {
// player.setLocation(player.getX()-3, player.getY());
}
// recshts
if (keyCode == 39) {
player.setLocation(player.getX() + 10, player.getY());
}
// ducken
if (keyCode == 40) {
// player.setLocation(player.getX() - 3, player.getY());
}
}
});
funktioniert auch alles soweit... jedoch wartet er in dem Fall beim Anlaufen einmal kurz und rennt dann los... Und ich kann z.B in dem Fall keine anderen Tasten mehrdrücken...
jemand eine Idee wie ichs anders angehen kann?
gesammter code:
Main:
Java:
/**
*
*/
package main;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import classes.Player;
import classes.World;
/**
*
*/
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
JFrame window = new JFrame();
World world = new World("Y:\\bg.jpg");
final Player player = new Player("Y:\\player.png");
window.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
// links
if (keyCode == 37) {
player.setLocation(player.getX() - 10, player.getY());
}
// springen
if (keyCode == 38) {
// player.setLocation(player.getX()-3, player.getY());
}
// recshts
if (keyCode == 39) {
player.setLocation(player.getX() + 10, player.getY());
}
// ducken
if (keyCode == 40) {
// player.setLocation(player.getX() - 3, player.getY());
}
}
});
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(500, 500);
window.add(world);
world.setLayout(null);
window.setVisible(true);
window.setSize(window.getPreferredSize());
window.setLocationRelativeTo(null);
world.add(player);
player.setLocation(50, 10);
}
}
Player:
Java:
/**
*
*/
package classes;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
/**
*
*/
@SuppressWarnings("serial")
public class Player extends JLabel {
private Image img;
public Player(String img) {
this(new ImageIcon(img).getImage());
}
public Player(Image img) {
this.img = img;
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
}
public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
}
}