【发布时间】:2013-05-22 15:10:36
【问题描述】:
我正在使用 javafx 2.2。我有一个随着鼠标移动而移动的圆形对象。但是,场景中有新的对象。我想将此对象始终放在其他对象之上。
使用 OPENGL,您只需在渲染循环的每一帧中最后绘制这个圆圈,但使用 JavaFX,如何实现?
【问题讨论】:
我正在使用 javafx 2.2。我有一个随着鼠标移动而移动的圆形对象。但是,场景中有新的对象。我想将此对象始终放在其他对象之上。
使用 OPENGL,您只需在渲染循环的每一帧中最后绘制这个圆圈,但使用 JavaFX,如何实现?
【问题讨论】:
大多数时候只使用Node.toFront()
在开始拖动节点时调用node.toFront()。
节点的绘制顺序由节点在其父节点的ObservableList 子节点中的位置决定。 node.toFront() 会将节点移动到父节点的子列表的末尾,这样它将是为该父节点渲染的最后一个东西。
注意,对于某些布局类型(如HBox),节点在父子列表中的顺序也决定了节点在列表中的布局位置以及节点的渲染顺序。
对于 3D 作品改变 z 顺序
如果你在做 3D 工作,那么调整节点的 z 坐标也可以将节点置于其他节点之上。
对于跨父拖动使用堆栈
如果你想将节点从它的父节点拖到另一个父节点,那么你可以将场景的根节点设置为堆栈,从它的初始父节点中删除节点,将其放在场景堆栈的顶部,拖动它到它的新父级,并在拖动完成后,从场景堆栈中删除该节点并将其放置在它的新父级子列表中的适当位置。
【讨论】: