Почему он перемещается по одному и тому же кругу каждый раз, когда я нажимаю, независимо от расстояния? - PullRequest
0 голосов
/ 11 июня 2018

Я делаю симулятор спортивного дизайна, в котором «тренер» добавляет список игроков, и вы можете перемещать их по экрану, используя mouseClicked, mouseDragged, mouseReleased.Он вычисляет ближайшего «игрока» по формуле расстояния при определении того, какой круг «двигаться».Тем не менее, независимо от координат моего клика, первый перемещенный круг является единственным перемещением круга, даже если есть еще один круг ближе.Мне было интересно, если вы все могли бы помочь мне:

public void mousePressed(MouseEvent e)
{
    xCoord = e.getX();
    yCoord = e.getY();
    //circleCenter = new Point((int)starterList.get(position).getPoint().getX(), (int)starterList.get(position).getPoint().getY());
    //circleCoords.add(circleCenter);
    //points = new ArrayList<Point>();
    for(i = 0; i < starterList.size(); i++)
    {
        closest = 3000;
        double difOfXes = starterList.get(position).getX() - xCoord;
        double difOfYes = starterList.get(position).getY() - yCoord;
        actualClosest = Math.sqrt(difOfXes * difOfXes + difOfYes * difOfYes);

        if(actualClosest < closest)
        {
            closest = actualClosest;
            position = i;
        }
    }
}

public void mouseDragged(MouseEvent e)    
{ 
    //Point circleClosest = circleCoords.get(position);

    starterList.get(position).setLocation(new Point(e.getX(), e.getY()));
    Point p = new Point(e.getX(), e.getY());
    starterList.get(position).setPoint(p);
    //starterList.get(position).getPoint().move((int) e.getX(), (int)e.getY());
    //set the coords of circleList at position= e.getx
    //points.add(p);
    //g.drawOval(p.getX(), p.getY(), 20,20);
    repaint();
}

public void mouseReleased(MouseEvent e)
{
    Point release = new Point(e.getX(), e.getY());
    //int circleCenterLoc = circleCoords.indexOf(circleCenter);
    starterList.get(position).setPoint(release);
    //playersPoints.add(points);
    //playerIDs.add(position);
}
...