Scintillement ou trainée de mon image : problème de thread
C _ Line
Messages postés4Date d'inscriptionjeudi 6 octobre 2005StatutMembreDernière intervention18 décembre 2009
-
21 déc. 2005 à 10:44
Belette32
Messages postés57Date d'inscriptionmercredi 14 septembre 2005StatutMembreDernière intervention22 novembre 2007
-
22 déc. 2005 à 12:15
public class sans_scintillement extends java.applet.Applet implements Runnable, KeyListener
{
// Charset du personnage
public Image charset;
// Sprite du personnage
public Image charsetAngel;
// Image producer du charset du personnage
public ImageProducer improd;
// Filtre permettant de délimiter une zone de découpage
// du charset afin d'obtenir le sprite
public ImageFilter filter;
// Coordonnées du sprite
public int xSprite=0, xAnc=0;
public int ySprite=0, yAnc=0;
// Coordonnées du personnage
public int x=100;
public int y=100;
// Traitement pour l'animation
Thread runner=null;
protected AudioClip aC = null;
// Méthode init
public void init()
{
// Fond gris
setBackground (Color.lightGray);
// Récupération de l'image (charset) ange.png
charset=getImage(getCodeBase(),"ange.png");
// Récupération de l'image producer
improd=charset.getSource();
filter=new CropImageFilter(xSprite,ySprite,80,64);
charsetAngel=createImage(new FilteredImageSource(improd,filter));
addKeyListener(this);
super.init();
try
{
AppletContext ac = getAppletContext();
if (ac != null)
aC = ac.getAudioClip(new URL(getDocumentBase(), "theme.mid"));
else
System.out.println(" fichier son introuvable ");
}
catch (MalformedURLException e) {}
aC.loop();
}
public void paint(Graphics g)
{
// Affichage du sprite
g.drawImage(charsetAngel,x,y,160,128,this);
//add(new Label("x : "+charset.getWidth(this)/4+" - y : "+charset.getHeight(this)/4));
}
public void keyPressed(KeyEvent evt)
{
int key = evt.getKeyCode();
switch (key)
{
case KeyEvent.VK_DOWN:
y=y+5;
ySprite=0;
break;
case KeyEvent.VK_UP:
y=y-5;
ySprite=192;
break;
case KeyEvent.VK_LEFT:
x=x-5;
ySprite=64;
break;
case KeyEvent.VK_RIGHT:
x=x+5;
ySprite=128;
break;
}
// Changement des images à chaque pas
if(xSprite==0) xSprite=80;
else if(xSprite==80) xSprite=160;
else if(xSprite==160) xSprite=240;
else if(xSprite==240) xSprite=0;
// Découpage du sprite
filter=new CropImageFilter(xSprite,ySprite,80,64);
charsetAngel=createImage(new FilteredImageSource(improd,filter));
}
public void keyTyped(KeyEvent evt) {}
public void keyReleased(KeyEvent evt) {}
J'ai un gros problème, lors de l'appui sur les touches flèches, mon personnage laisse une trainée derriere lui... Lorsque j'enlève la méthode update, le personnage scintille... Je suis dans une impasse, j'ai beau éplucher du code (je suis débutante en java), je ne trouve pas l'astuce!
Si quelqu'un peut m'aider svp!
C _ Line
Messages postés4Date d'inscriptionjeudi 6 octobre 2005StatutMembreDernière intervention18 décembre 2009 22 déc. 2005 à 09:31
Merci de me répondre Belette32!
J'ai essayé, mais ca ne change rien au problème...
Qui aurait une bonne doc sur les threads?
C'est peut-être parce que je les gère mal!