2010-12-08 2 views
0

У меня есть 2-мерный массив, отображаемый на экране, и решил реализовать метод, в котором он обнаружит местоположение касания и найдет плитку, в которой находится касание, и удалите ее, точнее, измените int на карте [x] [y]. В настоящее время у меня есть массив карт 2d, полный 3s ​​15 на 15. Прикоснитесь к местоположению и этому методу, который я создал, потому что я не мог найти способ округлить числа, вычислил бы позицию в массиве и изменил бы значение:Сила события касания Android закрывается

public boolean onTouchEvent(MotionEvent event) { 

    mX = (int) event.getX(); 
    mY = (int) event.getY(); 
    calculate(); 
    return true; 
} 

public void calculate() { 

    indexX = 0; 
    indexY = 0; 
    for (int n = 32; n < mX; n += 32) { 
     indexX++; 
    } 
    for (int n = 32; n < mY; n += 32) { 
     indexY++; 
    } 
    map[indexY][indexX] = 1; 
} 

это заставит близко, если я начиная затирания экрана или перетащить палец вокруг, но если я касаюсь в одном месте один за другими медленно он работает отлично. Я предположил, что метод вычисления не должен быть в методе сенсорного события, но все же я не совсем уверен.

+1

Не могли бы вы вставить логарифм? – Cristian 2010-12-08 15:37:17

ответ

0

Нет необходимости в этом для цикла. Разделение двух целых чисел должно дать вам целочисленный результат. Поскольку вы хотите разделить на две силы, вы также можете использовать оператор арифметического сдвига. (Можно подумать, что компилятор будет выбирать то, что быстрее, независимо от того, что вы кодируете, но поведение округления для отрицательных значений отличается)

indexX = mX >> 5;

Скорость не должна быть проблемой, если вы выполняете только две операции.

Под «принудительным закрытием» вы имеете в виду приложение, не отвечающее на диалог?

Если это что-то еще, у вас может быть проблема с границами.

+0

Хм, это странно. Первое решение, которое я придумал, заключалось в том, чтобы разделить на целые числа, как вы предлагали, но он не работал. Наверное, это потому, что у меня был подключен мой телефон И эмулятор работает или что-то в этом роде. Я попробую еще раз и посмотрю, что произойдет. – semajhan 2010-12-08 16:04:18