Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Déplacement javaFX personnage.


Sujet :

JavaFX

  1. #1
    Membre à l'essai
    Déplacement javaFX personnage.
    Bonjour, j'essaie de faire bouger un cercle que j'ai crée avant grâce au code qui permet d'ajouter pour chaque cas (exemple pour le cas S D Q Z ), une action qui permet pour Z d'avancer vers le haut, pour la touche D d'aller à droite, Q pour aller à gauche et Z pour reculer donc aller en bas.(C'est pour un futur jeux que je vais crée.Je n'arrive pas à crée le code qui me permet de faire ceci, j'ai essayer mais la console me met des messages d'erreurs, et pour les déplacement à droite, haut, gauche et en bas, je ne sais pas ce qu'il faut rentrer apres par exemple cas Z:

    //j'aimerais pouvoir mettre que mon cercle se dirige vers le haut de l'écran.

    J'aimerais que vous me fassiez le code du cercle qui ce déplace vers la droite quand je clic D, vers la gauche quand je fais Q, haut pour Z et bas pour S s'il vous plait .Merci de m'aider.

  2. #2
    Rédacteur/Modérateur

    Et si tu nous montrais un code de test qui essaie de résoudre ce que tu nous a indiqué histoire qu'on voit ce que tu as commencé à faire ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre à l'essai
    Déplacement javaFX personnage.
    Bonjour, merci de m'avoir répondu, j'ai réaliser un code qui permet de faire avancer(faire aller en haut) un cercle appelé c, crée auparavant.

    J'ai un dernier problème, quand je met c.setLayoutY(c.getLayoutY(-2)); ,c.getLayoutY est surligné en rouge donc je ne peux point lancer le programme.Pouvez-vous m'aider s'il vous plait, voici le code :

    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
    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
    package application;
     
    import java.util.HashSet;
     
    import javafx.animation.AnimationTimer;
    import javafx.application.Application;
    import javafx.scene.Group;
    import javafx.scene.Scene;
    import javafx.scene.input.KeyCode;
    import javafx.scene.paint.Color;
    import javafx.scene.shape.Circle;
    import javafx.stage.Stage;
     
     
    public class Main extends Application {
    	@Override
    	public void start(Stage primaryStage) {
    		try {
     
    			Group root = new Group();//Creation groupe
    			Scene scene = new Scene(root,800,500);//Creation fenetre de taille 400 sur 400 pixels
     
     
     
    			Circle c = new Circle();
    			c.setCenterX(400);
    			c.setCenterY(250);
    			c.setRadius(10);
    			c.setFill(Color.BLUE);
     
     
     
    			HashSet<KeyCode> tab = new HashSet<KeyCode>();
     
    			AnimationTimer aT = new AnimationTimer() {
    				public void handle(long l) {
    					for(KeyCode c : tab) {
     
    						switch(c){
     
    						case Z:
    							c.setLayoutY(c.getLayoutY(-2));
    							break;
     
    						case S:
     
    							break;
     
    						case D:
     
    							break;
     
    						case Q:
     
    							break;
     
     
    						}
    				}
     
    			};
     
     
    			};
     
     
    			scene.setOnKeyPressed(e ->{
    				boolean wasEmpty = tab.isEmpty();
    				if(tab.add(e.getCode()) && wasEmpty)
    						aT.start();
    			});
    			scene.setOnKeyReleased(e ->{
    				if(tab.remove(e.getCode()) && tab.isEmpty())
    						aT.stop();
    			});
     
    			scene.setFill(Color.WHITE);
    			root.getChildren().add(c);
     
     
    			primaryStage.setTitle("Ma premiere fenetre");//Ajout d'un titre a la fenetre
    			primaryStage.setScene(scene);//Ajout d'une scene dans la fenetre
    			primaryStage.show();//Rendre visible la fenetre
     
     
    		} catch(Exception e) {
    			e.printStackTrace();
    		}
    	}
     
    	public static void main(String[] args) {
    		launch(args);
    	}
    }

  4. #4
    Rédacteur/Modérateur

    Oui mais c'est normale ton Circle et ton KeyCode portent le meme nom de variable : c.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre à l'essai
    Merci de m'avoir répondu, c bon j'ai réussi à faire mon code.