Java Node.getChildren()是否可能不返回所有子级?

Java Node.getChildren()是否可能不返回所有子级?,java,javafx,Java,Javafx,我有一个正在向其中添加其他组的组子类的实例。 其中一个组是具有方法getCollision()的组的子类。 在该方法中,我为每个周期运行一个,以检查该组父项的所有子项: public Node getCollision() { System.out.printf("Entering get collision %s\n", From.getId()); for (Node n: this.getParent().getChildren()) {

我有一个正在向其中添加其他组的组子类的实例。 其中一个组是具有方法
getCollision()
的组的子类。 在该方法中,我为每个周期运行一个
,以检查该组父项的所有子项:

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的组的子类以及添加到父级的其他几个组。在提到的对象中,有一个场景的点光源,例如,因为它是this.getParent()
的子对象,但缺少其他几个对象,包括getCollision()所有者组。环境光也不见了。 (还尝试了常规for循环
for(int i=0;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
所以当一个人踢他的球时,时间线开始播放,它检查碰撞。在getCollision()中,我只遇到一些对象,包括上面创建的灯光,但没有遇到person1和person2


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

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

编辑:
实际上,它现在看起来更像一个32位对64位的问题,因为这个问题存在于Win7 64位下,但不存在于Win7 32位下。

this.getParent().getChildren()似乎不是一个好主意来获取您的兄弟姐妹(这不是错误的根源,而是违反了封装-德米特定律).你能用你对碰撞所做的脏检查来添加时间线吗?另外,如果只是MyChar不起作用,那么这个类中有什么东西可以使它的行为有所不同呢?这都是不相关的。原因如下:这些都是我们正在讨论的API调用,在我的代码中没有一个被重写。可能是集合中的线程问题?在哪个线程上添加您的孩子:如何使用您的时间线?这是狂欢,没有代码,无法帮助。