Donc, fondamentalement, pendant des jours, j'ai essayé de comprendre l'auditeur clé dans lequel je l'ai fait pour déplacer mon objet 'Superman' avec les touches fléchées. Cela ne fonctionne que lorsque I/* */out ma boucle while de dessiner la route «en mouvement». Une fois qu'il n'est pas commenté et que je cours le programme, le Superman ne bouge pas, et je suppose que c'est parce que la boucle a la priorité sur l'image. Je crois que j'ai besoin d'aide pour filer la priorité des images. L'aide est très appréciée.Comment donner à une image une priorité sur un fond de dessin en boucle
// The "CPT" class.
import java.applet.*;
import java.awt.*;
import java.awt.Image;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Runnable;
import java.lang.Thread;
public class CPT extends Applet implements KeyListener
{
// Place instance variables here
Image myImage;
int x = 100, y = 200;
public void init()
{
myImage = getImage (getCodeBase(), "SuperMan.png");
System.out.println (getCodeBase());
addKeyListener (this);
// Place the body of the initialization method here
} // init method
public void paint (Graphics g)
{
//Drawing sky
g.setColor (new Color (150, 150, 254));
g.fillRect (0, 0, 1000, 500);
//Drawing floor
g.setColor (Color.black);
g.fillRect (0, 500, 1000, 150);
//Drawing road lines
//g.fillRect (
//Drawing Sun
g.setColor (Color.yellow);
g.fillOval (800, 50, 75, 75);
//Drawing Birds
g.setColor (Color.black);
g.drawArc (100, 75, 25, 25, 0, 180);
g.drawArc (125, 75, 25, 25, 0, 180);
g.drawArc (175, 85, 25, 25, 0, 180);
g.drawArc (200, 85, 25, 25, 0, 180);
g.drawArc (250, 65, 25, 25, 0, 180);
g.drawArc (275, 65, 25, 25, 0, 180);
//Drawing Smaller Birds
g.drawArc (125, 55, 15, 15, 0, 180);
g.drawArc (140, 55, 15, 15, 0, 180);
while (true)
{
g.setColor (Color.black);
g.fillRect (-30, 575, 80, 25);
g.fillRect (120, 575, 80, 25);
g.fillRect (270, 575, 80, 25);
g.fillRect (420, 575, 80, 25);
g.fillRect (570, 575, 80, 25);
g.fillRect (720, 575, 80, 25);
g.fillRect (870, 575, 80, 25);
//first blocks
g.setColor (Color.yellow);
g.fillRect (50, 575, 80, 25);
g.fillRect (200, 575, 80, 25);
g.fillRect (350, 575, 80, 25);
g.fillRect (500, 575, 80, 25);
g.fillRect (650, 575, 80, 25);
g.fillRect (800, 575, 80, 25);
g.fillRect (950, 575, 80, 25);
for (int k = 0 ; k < 100000000 ; k++)
;
//second blocks
g.setColor (Color.black);
g.fillRect (50, 575, 80, 25);
g.fillRect (200, 575, 80, 25);
g.fillRect (350, 575, 80, 25);
g.fillRect (500, 575, 80, 25);
g.fillRect (650, 575, 80, 25);
g.fillRect (800, 575, 80, 25);
g.fillRect (950, 575, 80, 25);
g.setColor (Color.orange);
g.fillRect (10, 575, 80, 25);
g.fillRect (160, 575, 80, 25);
g.fillRect (310, 575, 80, 25);
g.fillRect (460, 575, 80, 25);
g.fillRect (610, 575, 80, 25);
g.fillRect (760, 575, 80, 25);
g.fillRect (910, 575, 80, 25);
for (int z = 0 ; z < 100000000 ; z++)
;
//third blocks
g.setColor (Color.black);
g.fillRect (10, 575, 80, 25);
g.fillRect (160, 575, 80, 25);
g.fillRect (310, 575, 80, 25);
g.fillRect (460, 575, 80, 25);
g.fillRect (610, 575, 80, 25);
g.fillRect (760, 575, 80, 25);
g.fillRect (910, 575, 80, 25);
g.setColor (Color.yellow);
g.fillRect (-30, 575, 80, 25);
g.fillRect (120, 575, 80, 25);
g.fillRect (270, 575, 80, 25);
g.fillRect (420, 575, 80, 25);
g.fillRect (570, 575, 80, 25);
g.fillRect (720, 575, 80, 25);
g.fillRect (870, 575, 80, 25);
for (int t = 0 ; t < 100000000 ; t++)
;
g.drawImage (myImage, x, y, 100, 40, this);
}
} // paint method
public void keyReleased (KeyEvent e)
{
}
public void keyPressed (KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_RIGHT)
{
// System.out.println ("Right Key Pressed");
x += 10;
}
if (e.getKeyCode() == KeyEvent.VK_LEFT)
{
// System.out.println ("Left Key Pressed");
x -= 10;
}
if (e.getKeyCode() == KeyEvent.VK_UP)
{
y -= 10;
}
if (e.getKeyCode() == KeyEvent.VK_DOWN)
{
y+=10;
}
repaint();
}
public void keyTyped (KeyEvent e)
{
}
} // CPT class