IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

Problème avec les sprites et méthode Paint


Sujet :

2D Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème avec les sprites et méthode Paint
    Bonjour,

    je tiens tout d'abord à vous remercier, car les ressources java se font rare sur le net...
    Ensuite, voila mon problème :
    Je suis en train de crée un jeu de type Frozen Bubble.
    Je me suis dit qu'un class Sprite serait pas mal pour tous mes objets graphiques.
    Cependant, j'ai un léger problème.

    Je crée un JFrame, un objet de type Sprite, mais il m'est impossible d'afficher une image donnée dans l'objet Sprite sur le JFrame...si vous me suivez tout cours.
    La méthode "dessineSprite" du Sprite ne fonctionne pas, je crois avoir un problème avec mon Objet Graphics...

    Voila les codes :

    Class PushinBlox (lanceur du jeu) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    import javax.swing.*;
    import java.awt.image.*;
    import java.awt.event.*;
    import java.awt.*;
     
    public class PushinBlox extends JFrame {
     
    	private Sprite monSprite;
    	private JPanel pane;
    	private Container monContainer;
    	private JPanel monPanel;
    	Graphics g;
     
    	public PushinBlox() {
     
    		// Création du JFrame
    		super("test");
    		this.setSize(400,400);
    		this.setLocationRelativeTo(null);
    		this.setVisible(true);
    		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		this.setResizable(false);
     
    		//Création du JPanel
    		this.monPanel = new JPanel();
     
    		this.monSprite = new Sprite(10,10,"../image.jpg");
    		// A lappel de cette fonction, rien ne se passe...
                    this.monSprite.dessineSprite(this.g);
    	}
     
    	/**
             * @param args
             */
    	static public void main (String arg [ ]) {
    		new PushinBlox();
    	}
     
    }
    Class Sprite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    import java.awt.*;
    import javax.swing.*;
    import java.awt.image.*;
     
    public class Sprite extends JPanel {
     
    	public int _x;
    	public int _y;
    	private Image image;
     
    	public Sprite(int x,int y,String chemin) {
     
    		this._x = x;
    		this._y = y;
    		this.image = Toolkit.getDefaultToolkit().getImage(chemin); //l'image à dessiner
    	}
     
    	public void dessineSprite(Graphics g) {
    		g.drawImage(this.image, this._x, this._y, this);
    	}
     
    }
    Je suppose que ca doit être une erreur idiote comme d'hab lol...En tout cas je vous remercie d'avance de me lire, même si vous ne trouvez pas la réponse...
    En passant, passez sur le blog Way to morrow.

    ++

  2. #2
    Gfx
    Gfx est déconnecté
    Expert éminent
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Points : 8 178
    Points
    8 178
    Par défaut
    1. N'utilise pas Toolkit.... pour charger l'image, mais ImageIO.read().
    2. Ne mets pas "this" comme dernier paramètre de drawImage() mais null.
    3. Ça ne risque pas de marcher car ton Graphics g n'a pas été intialisé. Normalement il faut faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class SurfaceDeJeu extends /* un composant */ {
      @Override
      protected void paintComponent(Graphics g) {
        monSprite.dessineSprite(g);
      }
    }
    Ou alors tu utilises directement ton Sprite comme un component que tu "add()" dans la fenêtre et tu crées une méthode paintComponent(Graphics g) qui sera utilisée par Swing pour l'affichage. Dans ton cas, la classe Sprite hérite de JPanel ce qui ne te sers à rien.

    Bref, va lire la FAQ pour mieux comprendre comment faire.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Je te remercie pour ton aide...
    Ben j'ai lu la FAQ et tout, enfin une grande partie, mais pas facile de trouver exactement ce que je voulais..
    En tout cas merci, j'avais déja vu pour utiliser mon sprite comme composant, j'espère pouvoir faire tout ce que je veux avec...
    Voila, je vous tiens au courant, merci encore !!

Discussions similaires

  1. [Débutant] probléme avec les surcharges de méthodes
    Par lila23 dans le forum C#
    Réponses: 5
    Dernier message: 30/06/2011, 15h44
  2. Problème avec les méthodes en JAVA
    Par beegees dans le forum Langage
    Réponses: 9
    Dernier message: 04/02/2007, 20h19
  3. Problème avec les Sprites
    Par themoye dans le forum Java ME
    Réponses: 3
    Dernier message: 28/09/2006, 15h33
  4. [Système] Problème avec les méthodes d'une classe
    Par oussama127 dans le forum Langage
    Réponses: 7
    Dernier message: 30/08/2006, 09h18
  5. problème avec les point sprites
    Par conrad dans le forum DirectX
    Réponses: 2
    Dernier message: 14/07/2005, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo