Перемещение между двумя точками с помощью мыши - PullRequest
1 голос
/ 24 марта 2012

Я пытаюсь переместить объект одним щелчком мыши, пока объект остается анимированным. На этом сайте есть несколько похожих постов, и я основал свой код на этом ответе:

Эффективный алгоритм для перемещения страусов по линии с постоянной скоростью

Но я хочу использовать поток, чтобы сохранить объект анимированным. Как мне это сделать? Вот мой код:

public void movePlayer(Graphics g, int finalX, int finalY)
{
    int length = finalX - xpos;
    int height = finalY - ypos;

    int oldXpos = xpos;
    int oldYpos = ypos;

    double speed = 20;
    double distanceX = (length)/speed;
    double distanceY = (height)/speed;

    double distance = (Math.hypot(length,height));
    double distanceTraveled = 0;

    //This currently doesn't work:
    move = new Thread(this);
    {
        while (distanceTraveled<distance)
        {
            //move the object by increments
            xpos += distanceX;
            ypos += distanceY;
            distanceTraveled = Math.hypot(xpos-oldXpos, ypos - oldYpos);
            drawPlayer(img, g);
            for(int x = 0; x < 100000; x ++);

        }
    }
}

1 Ответ

1 голос
/ 24 марта 2012

Если это Swing, почему бы просто не использовать MouseListener, чтобы помочь вам перетащить объект?Если вы хотите анимировать отдельно от мыши, не используйте цикл while(true), если вы не хотите заморозить поток событий.Вместо этого используйте Swing Timer.Если это не Swing, расскажите нам больше деталей (стреляйте, делайте это в любом случае)!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...