【发布时间】:2016-12-02 10:42:18
【问题描述】:
我正在用 JavaFX8 实现一个简单的棋盘游戏。
对于游戏板,我决定使用 10x10 GridPane 并在表单的初始化方法中用矩形填充它的单元格。
private void drawBoard() {
gridpaneBoard.getChildren().clear();
for (int y = 0; y < gridpaneBoard.getRowConstraints().size(); y++)
for (int x = 0; x < gridpaneBoard.getColumnConstraints().size(); x++) {
Rectangle rect = new Rectangle(55,55);
rect.setStroke(Color.BLACK);
Tile tile = GameController.getInstance().getBoard().getTile(x, y);
if (tile.hasBranch())
rect.setFill(QuestionDifficulty.values()[tile.getBranch()
.getQuestion().getQuestion()
.getLevel()].getColor());
else
rect.setFill(Color.WHITE);
gridpaneBoard.add(rect, x, y);
gridpaneBoard.add(new Label(String.valueOf(tile.getNumber())), x, y);
}
}
为了在掷骰子后为玩家标记移动设置动画,我认为我需要知道每个图块的中心 x 和中心 y(以创建从源图块到目标图块的路径过渡)。
我尝试了各种其他人的问题的答案,但对我来说一切都返回 0,0。
这是该场景中的容器层次结构:
这是当前输出的样子:
如果 GridPane 适合我想要实现的目标,我怎样才能获得孩子(在本例中为矩形)的屏幕/场景中心 x,y?
如果 GridPane 不好,你能指出我的替代方案以及我如何实现我想要的......
谢谢!
【问题讨论】:
-
您需要知道 centerX 和 centerY 才能使标签在您的记录中居中?
-
这可能是我的问题的另一种用途。但我主要关心的是找到路径转换的矩形中心。例如.. 将玩家令牌从 4 号地块移动到 12 号地块。 (动画在路径中也会有#5、#6、#7、#8、#9、#10、#11)
-
解决了标签对齐问题,只需在行/列约束上运行并将 V / H 对齐设置为 V / H pos.CENTER。
标签: javafx-8 coordinates rectangles gridpane