Анимация не работает, компонент просто перемещается вдоль оси X - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь создать симуляцию Agar.io, поэтому я использую метод MouseMotionListener mouseMoved, чтобы найти местоположение курсора, и вычисляю разницу между координатами курсора и координатами агара, чтобы вычислить наклон для анимации.
Ниже приведен код для реализованной mouseMoved ():

private class CursorTracker implements MouseMotionListener {
    public void mouseMoved(MouseEvent e) {
        //cursor location
        cursor_x = e.getPoint().getX();
        cursor_y = e.getPoint().getY();

        //agar location
        agar_x = agar.getX();
        agar_y = agar.getY();

        repaint();
    }

    public void mouseDragged(MouseEvent e) {}
}

Ниже actionPerformed () для таймера панели:

private class Animator implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        //adding food
        if (count == 30) {
            addRandomFood();
            count = 0;
        }
        count++;

        //agar animation - functions on slope animation: x changes by 1, y by m
        double delta_x = cursor_x - agar_x;
        double delta_y = cursor_y - agar_y;

        //slope
        double m = (delta_y)/(delta_x);

        //pass parameters
        agar.move(1, m);

        repaint();
    }
}

А вот код для Agar.move() метод:

public void move(double x_interval, double y_interval) {
    if (x >= 0)
        x -= x_interval;
    if (y >= 0)
        y -= y_interval;
}

Мое намерение состоит в том, чтобы выяснить наклон (который составляет ∆y / ∆x), изменить x на 1 и y на значение наклона (m) при каждом повторении таймера, чтодолжно теоретически привести к тому, что объект агара будет перемещаться к месту расположения курсора побитно.(поправьте меня, если я ошибаюсь)

Кроме того, детектор курсора (mouseMoved), кажется, работает странно;он работает только один раз, агар не меняет направление движения, даже если курсор перемещен.И он может даже не правильно «прослушивать» курсор и просто делать это по умолчанию, потому что независимо от местоположения курсора, когда программа запускается, агар всегда заканчивается движением вдоль оси x к началу координат.

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