दिलचस्प पोस्ट
फ्लोटिंग-प्वाइंट मान की सटीकता बनाए रखने के लिए Printf चौड़ाई निर्दिष्टकर्ता ES6 एरो फ़ंक्शंस में `तर्कों 'पर आधिकारिक जानकारी डुप्लिकेट कुंजी अद्यतन के साथ MySQL लोड डेटा INFILE django MultiValueDictKeyError त्रुटि, मैं इसे कैसे से निपटूं? क्या मैं सिंगल-उद्धरण के साथ सिंगल-कोट और आसपास के उपयोगकर्ता इनपुट से बचकर एसक्यूएल इंजेक्शन से बचा सकता हूं? Google कैलेंडर में जोड़ने के लिए लिंक टास्क कन्स्ट्रक्टर में रद्दीकरण टोकन: क्यों? मैं कैसे जांच करूं कि क्या कोई फ़ाइल पायथन का उपयोग कर रही है? जावास्क्रिप्ट क्या एकल-थ्रेडेड होने की गारंटी है? डिजाइन – विंडसर का उपयोग करते समय ऑब्जेक्ट्स को पंजीकृत किया जाना चाहिए सी # स्विच स्टेटमेंट सीमाएं – क्यों? AngularJS का नियंत्रण दो बार नियंत्रक का मुकाबला करना किस परिस्थिति में एक स्क्वॉश कनेक्शन स्वचालित रूप से एक परिवेश लेन-देन लेन-देन लेन-देन में भर्ती है? ब्राउज़र के पता बार छिपाए 100% की ऊंचाई के साथ पूर्ण स्क्रीन आइफ्रेम

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

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

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

वेब के समाधान से एकत्रित समाधान "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 } } });