Bonjour à tous, je cherche à faire une animation, un simple texte défilant.
Voici le code de narkotik :
Sous windows il fonctionne tres bien, aucun probleme de lag aucune frame de perdu ou non dessiné.
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 import java.awt.*; import java.awt.image.*; public class DoubleBufferingHardware extends Frame{ // boucle d'affichage RenderingThread renderingThread = new RenderingThread(); // variable permettant d'utiliser la mémoire VRAM BufferStrategy strategy; // buffer mémoire où les images et les textes sont appliqués Graphics buffer; int x = 0; // coordonnée x de l'affichage du texte public DoubleBufferingHardware(){ setSize( 400, 400 ); setVisible( true ); // inhibe la méthode courante d'affichage du composant setIgnoreRepaint( true ); // on créé 2 buffers dans la VRAM donc c'est du double-buffering createBufferStrategy( 2 ); // récupère les buffers graphiques dans la mémoire VRAM strategy = getBufferStrategy(); buffer = strategy.getDrawGraphics(); renderingThread.start(); } public void graphicalRender(){ buffer.setColor( Color.black ); buffer.fillRect( 0, 0, 400, 400 ); buffer.setColor( Color.white ); buffer.drawString( "affichage d'une ligne de texte", x, 200 ); x++; if ( x > 400 ) x = 0; //on envoie toutes les données du buffer mémoire vers le buffer d'affichage (équivalent d'un flush en C/C++) strategy.show(); } class RenderingThread extends Thread{ /** * Ce thread appelle le rafraichissement de notre fenêtre * toutes les 10 milli-secondes */ public void run(){ while( true ){ try { // on appelle notre propre méthode de rafraichissement graphicalRender(); sleep( 5 ); } catch ( Exception e ) {} } } } public static void main(String[] args){new DoubleBufferingHardware();} }
Mais sous linux, il ne dessine pas tout. J'ai des saccade dans mon animation. c'est pas du tout fluide. Mais si je viens à bouger ma souris dans mon application, alors le texte se déplace sans saccade et de maniere fluide tant que je bouge ma souris.
Est ce que quelqu'un aurait dejà eu ce petit soucis ?
Je suis sous ubuntu 10.10
et j'utilise l'open JDK 6
et netbeans 6.8
Merci d'avance.
Partager