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

 Java Discussion :

Deplacer rectangle et thread


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2014
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 4
    Par défaut Deplacer rectangle et thread
    Bonjour, j'essaye de déplacer mon rectangle d'un point a un autre mais le résultat n'est pas bonne (voir ci-jointNom : resultat.png
Affichages : 252
Taille : 4,7 Ko). Je sais que je dois utiliser un Thread mais je n'arrive pas.
    mon Code:
    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
    int x1 = 10;
    int y1 = 60;
    int x2 = 230;
    int y2 = 400;
     
    double angle = Math.atan2(y2 - y1, x2 - x1);
    double px = x1, py = y1;
     
    while(px < x2 && py < y2) {
       px += SPEED * Math.cos(angle);
       py += SPEED * Math.sin(angle);
     
    			imRecIcone = new ImageRectangle(iconeImage, (int)px, (int)py);
    			Graphics g2 = (Graphics)g;
    			imRecIcone.draw(g2,this);
    			repaint();
    }
    -----
    Constructeur classe ImageRectangle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public ImageRectangle(BufferedImage img, int x, int y) {
    		this.img=img;
    		ImageIcon icon = new ImageIcon(img);
    		this.rect=new Rectangle (x, y, icon.getIconWidth(), icon.getIconHeight());
     
    	}
    Merci beaucoup

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    L'ennui c'est qu'avec ce code tu n'as pas un seul rectangle que tu déplaces mais plein que tu dessines les uns derrière les autres....
    Et ensuite tu les dessines tout d'un coup entre deux phases d'affichage... ce qui donne ce que tu vois a l’écran.

    Il te faut donc :

    • Un seul rectangle.
    • Un thread qui va déplacer le rectangle a intervalle régulier et demander son ré-affichage a l’écran. C'est le thread qui boucle mais a la fin de chaque boucle il dort pour laisser le temps d'afficher le déplacement / ne pas avoir une animation trop rapide.
    • La partie affichage va se contenter d'afficher le rectangle a sa position actuelle, il n'y a pas de boucle.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2014
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 4
    Par défaut
    Merci beaucoup pour votre réponse..
    C'est ce que je cherche a faire. "C'est le thread qui boucle mais a la fin de chaque boucle il dort pour laisser le temps d'afficher le déplacement / ne pas avoir une animation trop rapide"
    Le thread je n'ai pas pu l'implementer.
    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Il suffit juste pourtant de créer un objet de type Thread soit en redéfinissant sa méthode run(), soit en passant un objet de type Runnable (dont on aura définit la méthode run()) en paramètre du constructeur. Bref dans les deux cas, la boucle (et l'appel à sleep()) vont dans la méthode run().
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. animer un rectangle avec Thread
    Par zangaloni dans le forum Général Java
    Réponses: 1
    Dernier message: 27/05/2009, 02h26
  2. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  3. Programmer des threads
    Par haypo dans le forum C
    Réponses: 6
    Dernier message: 02/07/2002, 13h53
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. [Kylix] Pb de Thread !!
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 25/04/2002, 13h53

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