gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:48 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com