दिलचस्प पोस्ट
D3.js मानचित्र: इसे घुमाने के लिए कैसे? अपाचे HTTP क्लाइंट का कौन सा संस्करण एंड्रॉइड 1.6 में बंडल है? मेलिंग से पहले उपयोगकर्ता इनपुट को PHP में कैसे स्वीकृत करना है? Android GridView डिवाइडर खींचें जावास्क्रिप्ट द्वारा अपडेट होने के बाद परिवर्तित HTML सामग्री प्राप्त करें? (htmlunit) Php में सीएसवी फ़ाइल से बड़े डेटा पढ़ें एचटीएमएलएक्स डाटाबेस और स्थानीयस्टोरेज को सबडोमेन में साझा किया जा सकता है? आज की तारीख के साथ मैं कैसे एक jQuery Datepicker पाठ बॉक्स पूर्व-पॉप्यूलेट? एक यूआरएल लोड करने के लिए एक WebView परिष्करण के लिए कैसे सुनने के लिए? जीआईटी मर्ज – स्क्वाश का उपयोग कैसे करें? कोणीय – एकाधिक HTTP कॉल के डेटा तक पहुंच – कैसे वादे को हल करने के लिए एचटीएमएल को पीडीएफ़ का उपयोग करके पीडीएफ में परिवर्तित करना? कैसे विजेट के दाईं ओर नीचे त्रिभुज के बिना एंड्रॉइड स्पिनर बनाने के लिए पायथन अनुरोध – कोई कनेक्शन एडेप्टर नहीं Google फायरबसे की जांच करें कि बच्चा मौजूद है या नहीं

JavaFX के लिए एक KeyListener कैसे लिखना

मैं थोड़ा खेल लिखना चाहता हूं जहां मैं डब्ल्यू , , एस , डी कुंजी के जरिए जावाएफ़एक्स पैनल पर एक गेंद को स्थानांतरित कर सकता हूं।
मेरे पास एक getPosX() और setPosX() लेकिन मैं नहीं जानता कि कैसे एक KeyListener लिखना है जो कि उदाहरण के लिए setPosX(getPosX()+1) गणना setPosX(getPosX()+1) अगर मैं डी दबाता हूं

मुझे क्या करना होगा?

Solutions Collecting From Web of "JavaFX के लिए एक KeyListener कैसे लिखना"

जावाआरंच फोरम पोस्ट से

कुंजी प्रेस और रिलीज हैंडलर दृश्य पर जोड़े जाते हैं और एप्लिकेशन में रिकॉर्ड किए गए आंदोलन राज्य चर को अपडेट करते हैं। एक एनीमेशन टाइमर जावा एफएक्स पल्स तंत्र में हुक होता है (जो डिफ़ॉल्ट रूप से एक सेकंड में 60 गुना एक घटना को बंद कर देता है) – तो यह एक तरह का गेम "लूप" है टाइमर में आंदोलन राज्य चर की जांच की जाती है और उनके डेल्टा कार्यों को चरित्र स्थिति पर लागू किया जाता है – जो प्रभाव में प्रमुख प्रेस के जवाब में स्क्रीन के चारों ओर चरित्र को स्थानांतरित करता है।

Zelda

 import javafx.animation.AnimationTimer; import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.*; import javafx.scene.image.*; import javafx.scene.input.KeyEvent; import javafx.scene.paint.Color; import javafx.stage.Stage; /** * Hold down an arrow key to have your hero move around the screen. * Hold down the shift key to have the hero run. */ public class Runner extends Application { private static final double W = 600, H = 400; private static final String HERO_IMAGE_LOC = "http://icons.iconarchive.com/icons/raindropmemory/legendora/64/Hero-icon.png"; private Image heroImage; private Node hero; boolean running, goNorth, goSouth, goEast, goWest; @Override public void start(Stage stage) throws Exception { heroImage = new Image(HERO_IMAGE_LOC); hero = new ImageView(heroImage); Group dungeon = new Group(hero); moveHeroTo(W / 2, H / 2); Scene scene = new Scene(dungeon, W, H, Color.FORESTGREEN); scene.setOnKeyPressed(new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent event) { switch (event.getCode()) { case UP: goNorth = true; break; case DOWN: goSouth = true; break; case LEFT: goWest = true; break; case RIGHT: goEast = true; break; case SHIFT: running = true; break; } } }); scene.setOnKeyReleased(new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent event) { switch (event.getCode()) { case UP: goNorth = false; break; case DOWN: goSouth = false; break; case LEFT: goWest = false; break; case RIGHT: goEast = false; break; case SHIFT: running = false; break; } } }); stage.setScene(scene); stage.show(); AnimationTimer timer = new AnimationTimer() { @Override public void handle(long now) { int dx = 0, dy = 0; if (goNorth) dy -= 1; if (goSouth) dy += 1; if (goEast) dx += 1; if (goWest) dx -= 1; if (running) { dx *= 3; dy *= 3; } moveHeroBy(dx, dy); } }; timer.start(); } private void moveHeroBy(int dx, int dy) { if (dx == 0 && dy == 0) return; final double cx = hero.getBoundsInLocal().getWidth() / 2; final double cy = hero.getBoundsInLocal().getHeight() / 2; double x = cx + hero.getLayoutX() + dx; double y = cy + hero.getLayoutY() + dy; moveHeroTo(x, y); } private void moveHeroTo(double x, double y) { final double cx = hero.getBoundsInLocal().getWidth() / 2; final double cy = hero.getBoundsInLocal().getHeight() / 2; if (x - cx >= 0 && x + cx <= W && y - cy >= 0 && y + cy <= H) { hero.relocate(x - cx, y - cy); } } public static void main(String[] args) { launch(args); } } 
 Scene myScene = new Scene(); KeyCombination cntrlZ = new KeyCodeCombination(KeyCode.Z, KeyCodeCombination.CONTROL_DOWN); myScene.setOnKeyPressed(new EventHandler<KeyEvent>(){ @Override public void handle(KeyEvent event) { if(contrlZ.match(event)){ //Do something } } });