2014-02-25 120 views
2

我正在嘗試製作一個像Space Invaders這樣的小遊戲。我在Netbeans 6.9中使用JavaFX,並且在其他地方找不到答案,所以我想我只是在這裏問。JavaFX:使用箭頭鍵和空格鍵移動圖像

我有一艘太空船的圖像,我想用我的箭頭鍵移動。當我按下空格鍵時,它應該拍攝導彈。導彈可以摧毀隕石。

這裏是我當前的代碼:

import javafx.stage.Stage; 
import javafx.scene.Scene; 
import javafx.scene.paint.Color; 
import javafx.scene.image.ImageView; 
import javafx.scene.image.Image; 
import javafx.animation.Timeline; 
import javafx.animation.Interpolator; 

var x: Number; 
Timeline { 
    repeatCount: Timeline.INDEFINITE 
    autoReverse: true 
    keyFrames: [ 
    at (0s) {x => 500.0}, 
    at (10s) {x => -100.0 tween Interpolator.LINEAR} 
    ] 
}.play(); 

Stage { 
title: "Shoot" 
scene: Scene { 
    fill: Color.BLACK 
    width: 800 
    height: 500 
    content: [ 
     ImageView { 
      x: 500 y: 25 
      image: Image { 
       url: "{__DIR__}earth.jpg"; 
      } 
     } 
     ImageView { 
      translateX: bind x 
      x: 150 y: 300 
      image: Image { 
       url: "{__DIR__}meteorite.png"; 
      } 
     } 
     ImageView { 
      x: 400 y: 450 
      image: Image { 
       url: "{__DIR__}spaceship.png"; 
      } 
     } 
    ] 
} 
} 

在此先感謝。

回答

2

你要的KeyListener添加到場景中

private EventHandler<KeyEvent> keyListener = new EventHandler<KeyEvent>() { 
    @Override 
    public void handle(KeyEvent event) { 
     if(event.getCode() == KeyCode.UP || event.getCode() == KeyCode.DOWN || 
     event.getCode() == KeyCode.RIGHT || event.getCode() == KeyCode.LEFT) { 
      //your code for moving the ship 
     } 
     else if(event.getCode() == KeyCode.SPACE) { 
      //your code for shooting the missile 
     } 
     event.consume(); 
    } 
}; 
+0

你能告訴我你的代碼在我的代碼,因爲我不知道如何使用它。 – Lampe

+0

我對新的LAMDA表達式不是很好,所以我很害怕,我不能用你當前的代碼。如果你有純Java版本的代碼,我會很樂意編輯它! – ItachiUchiha

+0

這會給你一些想法。你可以在javafx中實現它http://stackoverflow.com/questions/20485406/how-do-i-move-a-graphic-across-the-screen-with-arrow-keys – ItachiUchiha