1
我正在製作跳棋遊戲。三個主要組件是一個Board類,BoardPiece和GamePiece。所有GamePiece對象對於鼠標來說基本上是不可見的。點擊棋子時,會執行檢查以查看BoardPiece當前是否有GamePiece。所以一旦BoardPiece被點擊並找到一塊,那麼該塊就需要處理該事件(用於拖放)。下面是從BoardPiece類的摘錄:JavaFX構建新的事件鏈
setOnMousePressed(e -> {
if (e.getTarget() instanceof BoardPiece) {
BoardPiece bp = (BoardPiece)e.getTarget();
GamePiece p = bp.getPiece();
if (p != null) {
p.fireEvent(e);
}
}
});
setOnMouseDragged(e -> {
if (e.getTarget() instanceof BoardPiece) {
BoardPiece bp = (BoardPiece)e.getTarget();
GamePiece p = bp.getPiece();
if (p != null) {
p.fireEvent(e);
}
}
});
setOnMouseReleased(e -> {
if (e.getTarget() instanceof BoardPiece) {
BoardPiece bp = (BoardPiece)e.getTarget();
GamePiece p = bp.getPiece();
if (p != null) {
p.fireEvent(e);
}
}
});
正如你看到的,我必須手動告訴件來處理每一個事件,而不是事件的整個鏈條。我對JavaFX和Java一般都比較陌生,所以我主要關心的是學習最有效的方法。
謝謝!這基本上就是我最終做的,期望我只是將塊寫入一個在處理程序中調用的函數,然後再對BoardPiece執行其他任何操作。 –