Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Turalll
-1 / 2 / 0
Регистрация: 03.06.2010
Сообщений: 91
#1

Определить область касания и чувствительность (тачпад на экране) - Программирование Android

18.06.2016, 23:25. Просмотров 387. Ответов 0
Метки нет (Все метки)

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

Добавлено через 6 часов 1 минуту
дополню вопрос. вот пример https://gyazo.com/39b76d3e992dba4c369f428c9459c8a1 этот смайл должен двигаться , когда я буду перемещать палец по этой черной области (типо тачпад на экране) . Пробовал возможности движка andengine и ничего готового не нашел, везде нужно прикоснуться к самому спрайту. Как под себя переделать аналоговое управление джостиком, который в движке andengine я тоже не понял, дошел до того, что там надо менять всю конструкцию метода. Решил самому написать всё это. Следующее, что нашел на просторах интернета, это Canvas. Сделал всё как тут https://habrahabr.ru/sandbox/27511/. на экране есть этот смайл , который перерисовывается там где я кликну. Вот тут я получаю координаты касания
Java
1
2
3
4
5
6
7
public boolean onTouchEvent(MotionEvent event) { 
            if(event.getAction() == MotionEvent.ACTION_DOWN) { 
                touchX = event.getX(); 
                touchY = event.getY(); 
                invalidate(); } 
            return true; 
        }
и перерисовываю смайл в новых координатах.
Но мне нужно , чтобы касания отлавливались только в определенной области экрана и далее я их буду подставлять и без invalidate() (пока не пробовал без него рисовать) перерисовывать этот смайл, только придется как то корректировать эти координаты. Ведь нужно подставлять не сами координаты , а изменение координаты. Т.е. нажал на область тачпад и начинаю двигать пальцем и будет отслеживаться разница между координатами и непрерывно передаваться для рисования . буду прибавлять к имеющимся координатам смайла эту разницу , а n-кратное увеличение или уменьшение этих координат позволит регулировать чувствительность тачпада. И еще решается такая проблема, которую я видел в начале, если коснуться смайлика пальцем и двигать его то смайлик начинает отставать от пальца, не достаточно быстро перерисовывается что ли..

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

Добавлено через 4 часа 0 минут
оказалось всё не так то и тяжело. правда я еще не сделал чтобы клики ловились в определенной области. но уже прогресс. при нажатии на любую область экрана этот смайл начинает двигаться и повторять мои движения, но если поставить курсор на смайл и начать двигаться, чтобы заметить насколько отрисовка его отстает от движения курсора , то заметно , что это отставание создает дискомфорт. вот кусок кода
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@Override
        protected void onDraw(Canvas canvas) {
            // код рисующий графику
            Bitmap mybitmap = BitmapFactory.decodeResource(getResources(),R.drawable.face_box);
            // рисуем myBitmap на канве в координатах 10, 10
            canvas.drawBitmap(mybitmap, touchX, touchY, null);
 
        }
 
        public boolean onTouchEvent(MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    korX = touchX;
                    korY = touchY;
                    initX = event.getRawX();
                    initY = event.getRawY();
                   return true;
                case MotionEvent.ACTION_MOVE:
                    touchX = korX + (int) (event.getRawX() - initX);
                    touchY = korY + (int) (event.getRawY() - initY);
                    invalidate();
                return true;
            }
            return false;
        }
touchX и touchY это новые координаты, по которым метод invalidate() перерисовывает этот смайл, вот только медленно это происходит. как же это ускорить, какими способами рисовать?
Замечу что метод onTouch в котором реализовано и то что я сделал и вообще в нем реализуется касание по объекту и последующее его перемещение создает это отставание в прорисовке ( я так думаю) , потому что это отставание наблюдается везде где он используется. GestureDetector может имеет другую реализацию, попробую его использовать.. а что вы предложите ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2016, 23:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить область касания и чувствительность (тачпад на экране) (Программирование Android):

Определить, попадает ли точка в область на экране - Pascal ABC
Помогите пожалуйста решить) 1. С клавиатуры вводятся координаты точки (X,Y),расположенный на плоскости. Необходимо программно...

Как определить момент касания катящейся окружности и точки? - Python
Доброго времени суток, помогите, пожалуйста с задачей: Окружность малого радиуса катится снаружи по окружности большого радиуса....

Определить цену деления шкалы и чувствительность миллиамперметра - Метрология
Для измерения силы тока используется миллиамперметр с равномерной шкалой, разделенной на 50 интервалов. Нижний предел измерения Iн= -10 mA,...

Внезапно появилась белая область на экране ноутбука Acer Aspire - Ремонт ноутбуков
В общем, переустанавливал я виндовс 8. Ставил 64-битную версию... Всё хорошо установило... Прошла перезагрузка ноутбука. После, мне...

Изобразить на экране двумерную область, ограниченную графиками математических функций - Turbo Pascal
Изобразить на экране двумерную область, ограниченную графиками математических функций, учитывая следующие условия: Графики функций...

Определить область попадания в закрашенную область - Turbo Pascal
помогите пожалуйста, определить область попадания в закрашенную область, заранее спасибо=)

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2016, 23:25
Привет! Вот еще темы с ответами:

видиокарта gtx 1070 из коробки раздула отображаемую область на экране и обрезала ее - Видеокарты
здравствуйте, копил комп, коплектация как во втором посте темы http://www.cyberforum.ru/config-game-pc/thread1768967-page4.html мне...

Исследовав область определения и выбрав расположение координатных осей на экране и масштаб, построить графики функций - Pascal
Всем здравствуйте! Может кто-то знает, как написать такую программу. Помогите пожалуйста, очень срочно нужно!!! Благодарна за ранее! ...

Исследовав область определения и выбрав расположение координатных осей на экране и масштаб, построить графики функций - Turbo Pascal
Здравствуйте! Пожалуйста помогите написать программу Вот условие: Исследовав область определения и выбрав расположение координатных ...

Touch – обработка касания - Программирование Android
Задача - чтобы после прикосновения уменьшался шрифт до тех пор пока не будет поднят палец. Если ли другие варианты, кроме как написать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru