...
Nå skal vi få spiller-figuren til å bevege seg når du trykker piltastene. Først må du ordne det slik at FigurstyringController-objektet får beskjed når tastene trykkes. Dette kan du gjøre i SceneBuilder, slik:
Det skal se omtrent slik ut:ut omtrent som i figuren til høyre. Dette forteller JavaFX at når en tast trykkes (On Key Pressed) så skal metoden keyPressed i FigurstyringController-objektet kalles. Husk å lagre før du går tilbake til Eclipse for å skrive inn keyPressed-metoden i FigurstyringController-klassen. |
...
Code Block | ||
---|---|---|
| ||
<AnchorPane onKeyPressed="#keyPressed" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> <children> <Circle fill="LIME" layoutX="612.0" layoutY="220.0" radius="85.0" stroke="BLACK" strokeType="INSIDE" /> <Rectangle arcHeight="5.0" arcWidth="5.0" fill="DODGERBLUE" height="150.0" layoutX="449.0" layoutY="351.0" stroke="BLACK" strokeType="INSIDE" width="78.0" /> <Ellipse fill="RED" layoutX="266.0" layoutY="135.0" radiusX="28.0" radiusY="75.0" stroke="BLACK" strokeType="INSIDE" /> <Group fx:id="player <Arc fill="WHITE" layoutX="182139.0" layoutY="394332.0"> <children> <Arc fill="WHITE" length="270.0" radiusX="45.0" radiusY="45.0" startAngle="45.0" stroke="BLACK" strokeType="INSIDE" type="ROUND" /> </children> </Group> </children> </AnchorPane> |
Du kan jobbe direkte med FXML-koden i Eclipse, men det kan være litt vanskeligere å finne frem. Du må du passe på å få lagt inn onKeyPressed="#keyPressed" på rett sted selv!
...
Det første problemet som må løses er å gi FigurstyringController-objektet mulighet til å endre på spiller-figuren. For å få det til så må den gis et navn, både i FXML-fila og i FigurstyringController-klassen.
Med SceneBuilder, så gjør du som følger:
Det skal se ut omtrent som i figuren til høyre. |
Som tidligere så kan du legge inn denne koden i FXML-fila i Eclipse, om du ønsker. Finn FXML-koden for spiller-figuren og legg inn fx:id="player". Det skal se omtrent slik ut:
Code Block | ||
---|---|---|
| ||
<Arc fx:id="player" fill="WHITE" layoutX="139.0" layoutY="332.0" length="270.0" radiusX="45.0" radiusY="45.0" startAngle="45.0" stroke="BLACK" strokeType="INSIDE" type="ROUND" /> |
Nå må du legge inn en variabel i FigurstyringController-klassen med det samme navnet! Når FXMLLoader-en laster inn FXML-koden (dette skjer i start-metoden i FigurstyringApp), så sørger den samtidig for at denne variabelen settes til riktig figur-objekt, slik at keyPressed-koden kan flytte rundt på det (eller gjøre andre endringer.
Hva har du lært?
- å få JavaFX til å kalle en metode automatisk når en tast trykkes ned
- å flytte en figur avhengig av hvilken tast som trykkes
- å klassifisere figurer med styleClass-attributtet
- å sjekke om spiller kolliderer (overlapper) med andre figurer
- å reagere på ulikt vis avhengig av hva slags type figur som spilleren treffer på
...