2015-10-05 2 views
0

Je suis complètement nouveau à Java et j'ai un problème que j'essaie de résoudre. J'utilise la bibliothèque ACM pour mon but. Mon objectif est le suivant:Utilisation de pause pour arrêter les lignes en mouvement en Java

  1. Déplacer Étiquette 1
  2. Déplacer Étiquette 2
  3. Comparer étiquette 1 position de son et l'étiquette 2 (lorsque les hits texte et son sur l'autre) « Utilisation « si » déclaration »
  4. Une fois en haut, arrêtez-le en utilisant l'instruction break.
  5. Redémarrez le cycle.

Si quelqu'un pouvait m'aider en expliquant comment cela peut être mis en œuvre. Ce serait génial. J'essaie d'apprendre. Je vous remercie!

import acm.graphics.GLabel; 
import acm.program.CommandLineProgram; 
import acm.program.GraphicsProgram; 

public class Main extends GraphicsProgram { 

    public void run() 

    { 
      int label1_xy = 50; 
      int label2_xy = 200; 

      GLabel label1 = new GLabel("Hello World."); 
      add(label1, label1_xy,label1_xy); 

      GLabel label2 = new GLabel("Goodbye World."); 
      add(label2, label2_xy,label2_xy); 

      while (true) 
      { 
      label1.move(10,10); 
       pause(500); 
      label2.move(-10,-10); 
      break; 
      } 
    } 
} 

Répondre

1
  1. Déplacer Étiquette 1
  2. Déplacer Étiquette 2

Vous avez fait ces deux.

  1. Comparer étiquette 1 et de l'étiquette 2 de la position (lorsque les hits texte et son sur l'autre) "Utilisation 'si' déclaration"
  2. Une fois en haut, arrêtez en utilisant l'instruction break.

Vous pouvez comparer la position de ces deux étiquettes en essayant de récupérer la "borne" de l'objet. exemple:

label1.move(10,10); 
pause(500); 
if (label1.getBounds().getX() == label2.getBounds().getX() 
    && label1.getBounds().getY() == label2.getBounds().getY()) { 
    break; 
} else { 
    label2.move(-10,-10); 
} 
  1. redémarrer le cycle

Vous pouvez redémarrer ce en plaçant un autre bloc alors que pour le code run() ou peut-être juste appeler la run() (méfiez-vous du StackOverflowError ici).