【发布时间】:2019-07-27 08:05:09
【问题描述】:
我想要什么:我需要随机生成 10 个圆圈,带有随机坐标并将它们指向路径。然后使用动画创建一个需要沿该路径移动的正方形。
我的问题是什么:我无法创建 10 个具有随机坐标的随机圆,但我创建了动画代码。
这是我的代码,我创建了随机的曲线和正方形。那条曲线只是一个例子,因为我不知道如何用随机坐标制作圆圈并将它们指向路径。
final Rectangle rectPath = new Rectangle(0, 0, 40, 40);
rectPath.setArcHeight(10);
rectPath.setArcWidth(10);
rectPath.setFill(Color.ORANGE);
Path path = new Path();
path.getElements().add(new MoveTo(20, 20));
path.getElements().add(new CubicCurveTo(380, 0, 380, 120, 200, 120));
path.getElements().add(new CubicCurveTo(0, 120, 0, 240, 380, 240));
path.getElements().add(new CubicCurveTo(420, 350, 420, 440, 10, 450));
PathTransition pathTransition = new PathTransition();
pathTransition.setDuration(Duration.millis(4000));
pathTransition.setPath(path);
pathTransition.setNode(rectPath);
pathTransition.setOrientation(PathTransition.OrientationType.ORTHOGONAL_TO_TANGENT);
pathTransition.setCycleCount(5);
pathTransition.setAutoReverse(true);
pathTransition.play();
Group root = new Group();
root.getChildren().add(rectPath);
root.getChildren().add(path);
Scene scene = new Scene(root, 600, 450);
primaryStage.setTitle("Path transition demo");
primaryStage.setScene(scene);
primaryStage.show();
【问题讨论】:
-
“我不能用随机坐标创建 10 个随机圆圈”到底是什么阻止了你?您是否面临任何特定问题?它是否在某个范围内生成数字?还是重复这个过程?或者是其他东西?考虑添加伪解决方案、您认为您的应用程序应该具有的步骤,并描述您遇到问题的步骤。
-
不,我想用 for 循环来做到这一点,但我只是不知道如何,我可以像
Circle circle1 = new Circle();那样创建它们 ... 10 次。是的,我给出了错误的解释..我想用 for 循环创建 10 个圆圈,并用随机坐标将它们放在不重叠的位置,然后我想将它们指向路径,比如用线连接它们,然后在那条线上我将添加一个正方形。 -
考虑创建像
MyCircle这样的类,它将存储x,y,r。然后向它添加方法,该方法将检查它是否与boolean overlaps(MyCycle otherCycle){ return distanceFromCenters(this, otherCycle)<this.r+otherCycle.r;}等其他循环重叠。现在只需循环直到你有 10 个圆圈,在每次迭代中创建一个圆圈,将其添加到某个列表中,但只有在确认它不与已存储在列表中的其他圆圈重叠之后。如果它甚至与一个重叠,则生成另一个圆圈,直到您可以将其添加到列表中。重复 10 次。 -
看起来您是第一次使用,请考虑以下提示:在提出问题时,请尝试详细说明您为该问题付出的努力。一旦人们注意到你的努力,他们就会尝试回应。也尽量让你的问题尽可能狭窄和具体。大多数用户不会对广泛的问题表现出兴趣。在你的问题中,我们看不到你的任何努力。甚至您粘贴的代码也几乎是文档中的代码。尝试创建Minimal, Complete, and Verifiable example 并指出您面临的确切问题。