我确定我可以自己解决这个问题,但我觉得我写这篇文章的方式已经过于昂贵和耦合。
我正在编写一个带有安全机器人和入侵者的模拟器,我有一个碰撞功能,在第3个if语句中,它检查入侵者(宽度为11的矩形)是否与监控摄像机(弧)碰撞,如果是发生然后我想激活我的功能让安全机器人追逐入侵者。
< - 重要提示:checkShapeIntersection函数位于timeLine事件中,因此不断运行 - >
private boolean checkShapeIntersection(Shape block) {
//Name to check for intruder and surveillance collision
String Surveillance = "Arc";
boolean collisionDetected = false;
for (Shape static_bloc : nodes) {
if (static_bloc != block) {
Shape intersect = Shape.intersect(block, static_bloc);
if (intersect.getBoundsInLocal().getWidth() != -1) {
collisionDetected = true;
//Checks of intruder collides with an arc (surveillance), the 11th width is only for intruder rectangles
if ( Surveillance.equals(block.getClass().getSimpleName()) && static_bloc.getBoundsInLocal().getWidth() == 11) {
//Activate Chase function
testRobot.chaseIntruder(static_bloc);
detected = true;
}
}
}
}
if (collisionDetected) {
block.setFill(Color.BLUE);
} else {
block.setFill(Color.RED);
}
return detected;
}
在我的安全机器人类中
public void chaseIntruder(Shape intruder) {
destinationsList.add(new Vector2D(intruder.getLayoutBounds().getMinX(),intruder.getLayoutBounds().getMinY()));
this.updatePosition();
}
答案 0 :(得分:1)
您可能希望在这里使用多线程,在Java中,您可以实现Runnable
或Thread
来实现所需的功能。
以下是一些包含更多信息的链接:
In a simple to understand explanation, what is Runnable in Java?
https://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html
https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html
希望它有所帮助。