java - Node.getChildren() 是否可能不返回所有 child ?

标签 java javafx

我有一个 Group 子类的实例,我正在向其中添加其他 Groups。 其中一个组是一个组的子类,它有一个方法 getCollision() . 在那种方法中,我正在运行 for each循环检查该组父级的所有子级:

public Node getCollision() {        
    System.out.printf("Entering get collision %s\n", From.getId());

    for (Node n: this.getParent().getChildren()) {

        System.out.printf("n class: %s id %s\n", n.getClass(), n.getId());

问题是,输出从未提及正在执行 getCollision 的组的子类以及添加到父级的其他几个组。例如,在提到的对象中有场景的 PointLight,因为它是 this.getParent() 的子项。 ,但缺少其他几个,包括 getCollision() 所有者组。环境光也不见了。 (还尝试了一个常规的 for 循环 for (int i = 0; i < this.getParent().getChildren().size(); i++),结果完全相同)。 现在我对 getChildren() 结果中缺少其他对象还算可以,但是到底怎么可能调用了 getCollision,但它的类对象在添加后不在父类的 getChildren() 中? ??

这是我将它们添加到父级的方式:

final PointLight sunLight = new PointLight(Color.WHITE);
sunLight.setId("point_light");
this.Scape.getChildren().add(sunLight);

final AmbientLight ambLight = new AmbientLight(Color.rgb(50, 50, 50));
ambLight.setId("ambient_light");
this.Scape.getChildren().add(ambLight);

final MyChar person1 = new MyChar();
person1.setId("person1");
this.Scape.getChildren().add(person1);

final MyChar person2 = new MyChar();
person2.setId("person2");
this.Scape.getChildren().add(person2);

...

final BouncingBall bb = new BouncingBall();
bb.setId("bouncing_ball");
this.Scape.getChildren().add(bb);
person2.getBall().Kick(bb, person2.getTranslateX(), person2.getTranslateY(), person2.getTranslateZ()); // Method Kick calls getCollision() in a Timeline

因此,当 person2 踢他的球时,时间轴开始播放并检查碰撞。在 getCollision() 中我只遇到一些对象,包括上面创建的灯光,但不是 person1 也不是 person2。

据我所知,我的代码中没有任何一种可以应用于 getChildren() 的过滤。没有 API 调用被覆盖,除了 UI 之外没有线程。

最佳答案

这显然取决于操作系统。最初的问题出现在 XP 64bit SP2 下,JavaFX 8 官方不希望支持它。在 Win7 32 位 SP1 下执行的相同测试返回了该组的所有子项。

编辑: 实际上,它现在看起来更像是 32 位与 64 位的问题,因为该问题在 Win7 64 位下存在,但在 Win7 32 位下不存在。

关于java - Node.getChildren() 是否可能不返回所有 child ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20170902/

相关文章:

java - 在 Java 中搜索集合的最快方法

java - NSLookup 是否有比 InetAddress.getByName() 更快的方法?

java - 将 FXML 与 "pure javafx"代码混合

java - Maven:JavaFX:将库捆绑在一个 Jar 文件中

JavaFX隐藏id列

JavaFX Canvas : Draw a shape exclusively within another shape

java - 尝试用java android canvas.drawImage镜像图片

java - 如何确定国际象棋中的路径是否没有障碍?

java - Eclipse 快捷键是什么来打开允许按 TAB 键时光标转到预期位置的功能?

JavaFX 强制 GridPane 中的所有单元格具有相同的大小