如何激活循环中的函数以在退出循环后继续

时间:2017-08-02 07:59:41

标签: java loops javafx

我确定我可以自己解决这个问题,但我觉得我写这篇文章的方式已经过于昂贵和耦合。

我正在编写一个带有安全机器人和入侵者的模拟器,我有一个碰撞功能,在第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();
}

1 个答案:

答案 0 :(得分:1)

您可能希望在这里使用多线程,在Java中,您可以实现RunnableThread来实现所需的功能。

以下是一些包含更多信息的链接:

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

希望它有所帮助。