Bonjour,
J'ai un projet dans mon école et je dois créer un Cube Escape.
J'utilise JavaFX et le scene Builder.
J'ai crée un magazine avec 9 pages.
Le problème, c'est que pour tourner les pages j'utilise toujours le même bouton (tournerPageDroite pour aller a droite et tournerPageGauche pour l'inverse).
Et quand je fais ça, je fais des toFront et des toBack des images afin de les afficher.
Mais c'est toujours le même code dans les if.
Je vous montre le code pour le bouton de droite:
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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
| @FXML
private Button tournerPageDroite;
@FXML
private Button tournerPageGauche;
//toutes les pages du magazine
@FXML
private ImageView page0;
@FXML
private ImageView Page1;
@FXML
private ImageView Page2;
@FXML
private ImageView Page3;
@FXML
private ImageView Page4;
@FXML
private ImageView Page5;
@FXML
private ImageView Page6;
@FXML
private ImageView Page7;
@FXML
private ImageView Page8;
@FXML
private ImageView page9;
//images magazine
@FXML
private ImageView magazine;
@FXML
private ImageView pageDroiteMagazine;
@FXML
private ImageView pageGaucheMagazine;
//autres variables
private static int page = 0;
public void clicPDMag(MouseEvent e){
if(e.getSource() == tournerPageDroite && page == 8) {
magazine.toBack();
Page7.toBack();
Page8.toBack();
pageGaucheMagazine.toFront();
page9.toFront();
tournerPageDroite.toFront();
tournerPageGauche.toFront();
page = 9;
}
//si on est sur la septieme et huitieme page
if(e.getSource() == tournerPageDroite && page == 78) {
magazine.toBack();
Page7.toBack();
Page8.toBack();
pageGaucheMagazine.toFront();
page9.toFront();
tournerPageDroite.toFront();
tournerPageGauche.toFront();
page = 9;
}
//si on est sur la cinquieme et sixieme page
if(e.getSource() == tournerPageDroite && page == 56) {
Page5.toBack();
Page6.toBack();
Page7.toFront();
Page8.toFront();
tournerPageDroite.toFront();
tournerPageGauche.toFront();
page = 78;
}
//si on est sur la troisieme et quatrieme page
if(e.getSource() == tournerPageDroite && page == 34) {
Page3.toBack();
Page4.toBack();
Page5.toFront();
Page6.toFront();
tournerPageDroite.toFront();
tournerPageGauche.toFront();
page = 56;
}
//si on est sur la premiere et deuxieme page
if(e.getSource() == tournerPageDroite && page == 12) {
Page1.toBack();
Page2.toBack();
page9.toBack();
Page3.toFront();
Page4.toFront();
tournerPageDroite.toFront();
tournerPageGauche.toFront();
page = 34;
}
if(e.getSource() == tournerPageDroite && page == 0) {
pageDroiteMagazine.toBack();
page0.toBack();
magazine.toFront();
Page1.toFront();
Page2.toFront();
tournerPageDroite.toFront();
tournerPageGauche.toFront();
page = 12;
}
} |
Pour information, magazine est une image de fond qui représente un livre ouvert sur 2 pages.
pageDroiteMagazine représente seulement la partie droite du livre et pageGaucheMagazine inversement.
La fonction "clicPDMag" est due a un onMouseClicked sur le scene builder.
Je suis dans le controller et je l'ai bien relié au scene builder.
Ce magazine marche très bien comme ça mais j'aimerai vraiment l'optimiser car je trouve que c'est vraiment trop long (surtout qu'il y a aussi le bouton de gauche)
J'ai essayé de faire un tableau d'image:
ImageView[] tabPages= new ImageView[]{page0, Page1, Page2, Page3, Page4, Page5, Page6, Page7, Page8, page9};
Mais je n'arrive pas à l'utiliser quand je code.
J'ai tenté avec ce code et ce tableau:
1 2 3 4 5 6 7 8 9 10 11
| if(e.getSource() == tournerPageDroite && page!= 8) {
tabPages[page].toBack();
tabPages[page-1].toBack();
magazine.toFront();
page++;
tabPages[page].toFront();
page++;
tabPages[page].toFront();
tournerPageDroite.toFront();
tournerPageGauche.toFront();
} |
Mais ca ne marche pas.
Merci d'avance si vous trouvez une autre solution ou juste l'erreur dans mon tableau ou mon code.
J'espère que se que j'ai expliqué n'était pas trop brouillon.
Partager