2010-01-08 9 views
4

Je développe un jeu Snake. Au lieu d'afficher un rectangle en mouvement, j'ai l'intention de montrer une image et je veux la déplacer en appuyant sur une touche.affichant une image en mouvement

mais je ne peux pas le faire avec Jlabel. puisque les étiquettes sont statiques en position.

Est-il possible de les afficher uniquement en tant qu'image?

merci.

Répondre

4

Vous ne voulez pas écrire un jeu en utilisant des composants swing pour les sprites! Au lieu de cela, vous créez plutôt un élément de contrôle personnalisé (généralement dérivé de JPanel ou Canvas), puis vous remplacez la fonction paint().

l'intérieur de votre fonction de peinture que vous dessinez votre image comme ceci:

class MyClass extends JPanel{ 
    int x,y; 
    BufferedImage myImage = ImageIO.read("mySprite.png"); 

    @Override 
    public void paint(Graphics g){ 
     g.drawImage(myImage,x,y,this); 
    } 
} 

Puis dans votre code que vous modifiez les valeurs de x et y pour déplacer l'image-objet.

+1

Quelle version de Java cet exemple utilise-t-il? ImageIO.read ne semble pas avoir une implémentation qui ne prend qu'une chaîne en Java 6. Voulez-vous dire la variante qui prend un argument java.io.File? – Ceilingfish