2015-10-11 2 views
-2

странно, но я хочу сделать следующее:Android: Обнаружение OnClick, и есть ли другой элемент на вершине

  • Есть круглый элемент размером с кончик пальца в нижней правой части экрана ,
  • Поместите некоторые изображения слева от экрана в том же положении Y, которые перемещаются слева направо и в конечном итоге перекрывают вышеуказанный элемент.
  • Обнаружить, когда этот первый элемент коснулся, И если элемент изображения перекрывает его.

Это похоже на то, как работает Dance Dance Revolution или Guitar Hero. Они выстраиваются в линию, вы нажимаете в нужное время, и что-то происходит.

Я знаю, как установить onClickListener, но кто-нибудь знает, как достичь вышеуказанного?

Cheers, Lee.

+0

Я думаю просто оператор if, чтобы определить, были ли сразу выбраны оба элемента. Это потребовало бы, чтобы все элементы на оси Z определенной координаты были обнаружены сразу после нажатия. Кто-нибудь знает, является ли это функцией по умолчанию? –

+0

Любая причина для отрицательных моментов? Feelsliketroll.exe. –

ответ

0

Так что, несмотря на получение голосов (было бы приятно сообщить мне, почему, поэтому я могу избежать того, что было в будущем!), Я собираюсь опубликовать решение, которое я в конечном итоге разработал самостоятельно. Надеюсь, это когда-нибудь поможет кому-то другому.

Примечание: я немного поменял его. Теперь у меня есть ки-бласты, идущие справа от экрана, которые движутся влево, и когда изображение Goku постучано, код проверяет, находится ли какой-либо из ki-взрывов в X-позиции Goku плюс или минус 100 (поэтому 100px радиус от центра Гоку).

// Set the touch listener for the image I want as the target 
imgCurrentForm.setOnTouchListener(new View.OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 

        // Ki Blast image 
        ImageView kiBlast1 = (ImageView) findViewById(R.id.kiBlast1); 

        // Current X positions at any point in time 
        float xposForm = imgCurrentForm.getX(); 
        float xposKi1 = kiBlast1.getX(); 

        // Handle the screen touch event 
        int action = event.getAction(); 
        switch (action) { 

         case MotionEvent.ACTION_DOWN: 

          if (currentPowerLevel >= 1 && currentPowerLevel <= 299999) { 

           if (Math.abs(xposForm - xposKi1) <= 100) { 
            // Do whatever needs to be done if true 
           } 
          } 
          break; 
        } 
        return true; 
       } 
      }); 
+0

Его более 9000! Может быть, лучше переместить это в класс «Двигатель»/«Политика», который выполняет всю внутреннюю обработку. Передача объектов, необходимых для принятия решений. Просто мысль. – JoxTraex

+0

Привет @JoxTraex, спасибо за предложение. Я новичок в Java, но я сделаю некоторые исследования на этом, так как я уверен, что мой код нуждается в серьезном рефакторинге! –

Смежные вопросы