Théorie: réagir aux événements #
- Il suffit de changer les attributs de l’objet 2d
- P.ex. on pourrait modifier sa vitesse en recevant la touche ←
- L’effet est que l’objet va changer de direction
En Ntro
#
-
Capter les événements du clavier et lancer un événement Ntro
public class VuePartie extends ViewFx { // ... @Override public void initialize() { // ... installerEvtActionJoueur(); } private void installerEvtActionJoueur() { canvasPartie.addEventFilter(KeyEvent.KEY_PRESSED, evtFx -> { if(evtFx.getCode().equals(KeyCode.W)) { Ntro.newEvent(EvtActionJoueur.class) .setAction(new ActionJoueur(Position.GAUCHE, Action.HAUT)) .evtNtro.trigger(); }else if(evtFx.getCode().equals(KeyCode.S)) { // ... }); }
-
Ajouter une tâche pour l’événement Ntro
subTasks.task("reagirActionJoueur") .waitsFor(event(EvtActionJoueur.class)) .executes(inputs -> { DonneesVuePartie donneesVuePartie = inputs.get(created(DonneesVuePartie.class)); EvtActionJoueur evtActionJoueur = inputs.get(event(EvtActionJoueur.class)); evtActionJoueur.appliquerA(donneesVuePartie); });
-
Appliquer l’événement, p.ex.
- appeler
palette.monter()
pour la toucheW
- appeler
palette.descendre()
pour la toucheS
- appeler
palette.arreter()
quand la touche est relâchée
public class Palette2d extends ObjetPong2d { private static final double VITESSE_PALETTE = 200; // ... public void monter() { setSpeedY(-VITESSE_PALETTE); } public void descendre() { setSpeedY(+VITESSE_PALETTE); } public void arreter() { setSpeedY(0); }
- appeler