как переместить 2 круга на экране независимо друг от друга? - PullRequest
0 голосов
/ 03 сентября 2011

У меня есть приложение, которое рисует 2 круга на экране.Однажды нарисованный, я могу перемещать один из кругов и размещать там, где я хочу.Есть ли способ определить, к какому кругу я прикоснулся, чтобы я мог переместить этот конкретный круг?В настоящее время я могу перемещать круг только по координатам в centreX centreY.

public boolean onTouchEvent(MotionEvent ev) {
      switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN: {
               if(xyFound == false) {
                centreX = (int) ev.getX()-70;
                centreY = (int) ev.getY()-70;
                xyFound = true;

               } else {
                centreA = (int) ev.getX()-70;
                centreB = (int) ev.getY()-70;
                abFound = true;
                bothCirclesInPlace  = true;
                invalidate();
               }
            }

            case MotionEvent.ACTION_MOVE: {
                if(xyFound == false){
                    centreX = (int) ev.getX()-70;
                    centreY = (int) ev.getY()-70;
                    xyFound = true;
                }else{
                    centreA = (int) ev.getX()-70;
                    centreB = (int) ev.getY()-70;
                    bothCirclesInPlace = true;
                    invalidate();
             }      break;

     }          

.

[update1]

@Override
    public boolean onTouchEvent(MotionEvent ev) {



        switch (ev.getAction()) {

            case MotionEvent.ACTION_DOWN: {


                float circ1Val = centreX + centreY;
                float circ2Val = centreA + centreB;

                float choice1 = circ1Val - (ev.getX() + ev.getY());
                float choice2 = circ2Val - (ev.getX() + ev.getY());



                float circleToBeMoved = choice1 < choice2 ? ;

.Я не уверен, что лучший способ рассчитать расстояние между каждым кругом и событием касания.это на правильных линиях?или есть лучший способ?спасибо

1 Ответ

0 голосов
/ 03 сентября 2011

Существует следующий подход:

На ACTION_DOWN вы определяете, какой круг лежит рядом с точкой, к которой вы прикоснулись.Поэтому вы рассчитываете расстояние от (centreX,centreY) до (ev.getX(),ev.getY()) и от (centreA,centreB) до (ev.getX(),ev.getY()).Если первый меньше второго, вы переместите первый круг, в противном случае второй круг (сохраните этот выбор в поле circleToBeMoved).Возможно, вы хотите отклонить любое движение, если оба расстояния превышают пороговое значение (например, радиус окружностей).

Во-вторых, на ACTION_MOVE перемещайте только окружность, содержащуюся в circleToBeMoved (если есть).

...