Bonjour,
Je suis en train de réaliser un petit jeu en 2d en utilisant la librari slicket j'aimerais afficher du texte provenant d'un fichier texte dans une boite de dialogue !
J'aimerais que ce texte soit afficher caractère par caractère avec un caractère afficher toute les 200 ms.
Voici mon code actuel :
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 58 59 60 61
| /**
* Fonction afficherDialogue: permet d'afficher le dialogue
* @return void
* @throws InterruptedException
*/
public void afficherDialogue() throws InterruptedException
{
this.backgroundDialogue.draw(207, 158);
// On lit le fichier texte
String fileName;
FileReader file = null;
String s = "";
int i;
fileName = "dial"+this.idTxtEnCours+".txt";
try
{
file = new FileReader(fileName);
} catch(FileNotFoundException e){
e.printStackTrace();
}
try
{
i = file.read();
while(i!=-1)
{
// On récupère le caractère
s += (char)i;
// On le dessine
this.font.drawString(this.posXToDraw, this.posYToDraw, s);
// Si la prochaine position en X sort de la boite de dialogue...
if((this.posXToDraw + 20) > 206) {
// ...On réinitialise la position en X
this.posXToDraw = 168;
// ...On incrémente la position en Y (on fait "un retour a la ligne")
this.posYToDraw += 20;
} else {
// on incrémente la position en X du prochain caractère
this.posXToDraw +=20;
}
// On réinitialise la chaîne de caractère
s="";
// On lit le prochain caractère
i = file.read();
// On fait une pause de 200 ms
Thread.sleep(200);
}
} catch (IOException E){
E.printStackTrace();
}
} |
La variable "font" est de type SpriteSheetFont (classe de Slick : SpriteSheetFont)
Le problème est que ça ne marche pas, les caractères ne sont pas affichés toutes les 200 ms et pas au bonne position. de plus la première ligne
this.backgroundDialogue.draw(207, 158)
n'est pas afficher tout de suite alors qu'elle le devrait !
Une idée ou une autre méthode??
merci !
Partager