我正在編寫一個類似于打磚塊的簡單游戲。有必要按左箭頭進行平臺移動。負責點擊按鈕的代碼: canvas.requestFocus(); canvas.setOnKeyTyped(new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent event) { if (event.getCode() == KeyCode.LEFT) { System.out.println("Leffft"); platform.LeftShift(); event.consume(); } } });問題是,當您啟動并按下按鈕時,什么也沒有發(fā)生。游戲場.javaimport javafx.animation.KeyFrame;import javafx.animation.Timeline;import javafx.application.Application;import javafx.event.ActionEvent;import javafx.event.EventHandler;import javafx.scene.input.KeyCode;import javafx.scene.input.KeyEvent;import javafx.scene.layout.Pane;import javafx.scene.paint.Color;import javafx.stage.Stage;import javafx.scene.Scene;import javafx.util.Duration;public class GameField extends Application {public static GameField me;public GameField(){ me=this;}static Pane canvas = new Pane();static Ball ball = new Ball(5, Color.WHITE);static Platform platform = new Platform(80,5, Color.WHITE);Scene scene = new Scene(canvas,550,500, Color.BLACK);static Timeline timeline;@Overridepublic void start(Stage stage) { canvas.getChildren().add(ball); canvas.getChildren().add(platform); ball.relocate(50, 50); platform.relocate(235,495); stage.setScene(scene); stage.setTitle("Cat Arcanoid"); stage.show();左移方法public void LeftShift(){ double dx = 10; GameField.platform.relocate(getLayoutX()-dx, getLayoutY());}
1 回答

飲歌長嘯
TA貢獻1951條經驗 獲得超3個贊
關鍵事件提供了兩個“級別”的事件。
更高級別(來自 keyTyped)
“按鍵類型”事件是更高級別的,通常不依賴于平臺或鍵盤布局。它們在輸入 Unicode 字符時生成,是查找字符輸入的首選方式。................... 不會為不生成 Unicode 字符的鍵(例如,操作鍵、修飾鍵等)生成鍵類型事件。
較低級別的 'keyPressed' 和 'keyReleased' 事件可能會給你你想要的:
“按鍵按下”和“按鍵釋放”事件是較低級別的,取決于平臺和鍵盤布局。每當按下或釋放鍵時都會生成它們,并且是找出不生成字符輸入的鍵(例如,操作鍵、修飾鍵等)的唯一方法。被按下或釋放的鍵由代碼變量指示,該變量包含一個虛擬鍵代碼。
添加回答
舉報
0/150
提交
取消