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

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

Войти
Регистрация
Восстановить пароль
 
 
fanatjan
0 / 0 / 0
Регистрация: 20.09.2011
Сообщений: 52
#1

Падает скорость объектов на экране при нажатии - Программирование Android

22.03.2015, 13:44. Просмотров 425. Ответов 17
Метки нет (Все метки)

Привет. У меня возникла проблема. Создал маленькую игру, На экране двигаются несколько объектов, а один из них двигается в зависимости от нажатия и движения пальцем по экрану. Проблема в том что при нажатии скорость других объектов падает, они как бы начинают подтормаживать. Насколько я понимаю это из за частого вызова onTouchEvent.
Вот здесь рисую все объекты
Java
1
2
3
4
5
6
7
8
9
protected void MyOnDraw(Canvas canvas) 
{
Iterator<Enemy> i = enemy.iterator();
          while(i.hasNext()) {
              Enemy e = i.next();
              e.MyOnDraw(canvas);
              //canvas.drawCircle(e.m_x+e.myWidth/2, e.m_y+e.myWidth/2, e.myWidth/2, paint);
          }
touch_obj.MyOnDraw(canvas, X, Y);
Вот здесь беру координаты
Java
1
2
3
4
5
6
7
8
9
public boolean onTouchEvent(MotionEvent event)  
    {
                case MotionEvent.ACTION_DOWN:
                case MotionEvent.ACTION_MOVE:
                {
                        float X=(float)event.getRawX();
                        float Y=(float)event.getRawY();
                }
    }
Что нужно сделать чтобы onDraw не тормозил. Можно ли как то кинуть onTouchEvent в отдельный поток, или отрегулировать частоту его вызова?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2015, 13:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Падает скорость объектов на экране при нажатии (Программирование Android):

Клиент падает при запуске - Программирование Android
Добрый день подскажите пожалуйста, где может быть ошибка. Не как не получается запустить данный код на Android при нажатие кнопки...

При использовании свича скорость падает до 0 - Сетевое оборудование
Добрый вечер! У меня интернет разделен на два компьтера свичем. Раньше скорость делилась на две примерно равные части. А в последние дни,...

Падает скорость интернета при включенном компьютере - Сетевое оборудование
Здравствуйте, уважаемые пользователи форума! Уже год пытаюсь решить свою проблему с интернетом. Дело в том, что у меня ADSL интернет от...

При подключении сегмента падает скорость интернета - Сети
Ситуация: Есть локальная сеть из трех сегментом и Вай-Фай. Все через Д-линк 2640 (роутер) с выходом в интернет. в сегментах есть свичи...

Скорость интернета падает при конвертации видео - Windows 7
Привет всем. когда конвертирую видео программой Any Video Converter Professional или Movavi Конвертер, то скорость скачивания в уторрент...

Падает скорость отрисовки при transparent = true - C++ Builder
вывожу на image1 через буфер. при отключенной прозрачности у image1 скорость отрисовки устраивает, но мне надо чтобы св-во transparent было...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Pablito
2494 / 1939 / 605
Регистрация: 12.05.2014
Сообщений: 6,798
Завершенные тесты: 1
22.03.2015, 17:18 #2
первый кусок кода какой-то бред вообще, я так и не смог постичь его логику
0
fanatjan
0 / 0 / 0
Регистрация: 20.09.2011
Сообщений: 52
22.03.2015, 21:18  [ТС] #3
Что конкретно ты не понял. "e.MyOnDraw(canvas);" - рисую несколько объектов. "touch_obj.MyOnDraw(canvas, X, Y);" рисую объект который перетаскивается по экрану. Ниже в onTouchEvent задаю X, Y координаты.
Проблема в том что во время перетаскивания, остальные объекты подтормаживают.
0
Pablito
2494 / 1939 / 605
Регистрация: 12.05.2014
Сообщений: 6,798
Завершенные тесты: 1
23.03.2015, 09:29 #4
по строчкам:
- заходим в метод MyOnDraw()
- получаем итератор
- идем по списку и у каждого объекта в списке снова вызываем MyOnDraw() в котором снова получаем итератор и так далее

где логика?
1
fanatjan
0 / 0 / 0
Регистрация: 20.09.2011
Сообщений: 52
23.03.2015, 16:33  [ТС] #5
"в котором снова получаем итератор"
Я просто передаю canvas в классе Enemy он уже рисует "canvas .drawBitmap(bmp, src, dst, paint);"
В чем тут проблема?
0
Pablito
2494 / 1939 / 605
Регистрация: 12.05.2014
Сообщений: 6,798
Завершенные тесты: 1
23.03.2015, 16:39 #6
вот для интереса, сразу перед этой строкой
Java
1
Iterator<Enemy> i = enemy.iterator();
попробуй выводить что-нибудь в консоль, любой символ или строчку
а потом посмотри сколько раз он его выведет при касании экрана

если я правильно прочитал код - там рекурсия получается, что бы понять почему тормозит надо сначала распутать эту бороду в коде

если там нет рекурсии то я очень извиняюсь, нуб и опозорился
0
androbro
326 / 286 / 60
Регистрация: 17.10.2014
Сообщений: 843
23.03.2015, 16:52 #7
Паблито,
Цитата Сообщение от Паблито Посмотреть сообщение
если там нет рекурсии то
увы, там ее нет)
написано же e.MyOnDraw(canvas);
MyOnDraw - разные методы, один для сцены, другой для Enemy как я понял.
2
Pablito
2494 / 1939 / 605
Регистрация: 12.05.2014
Сообщений: 6,798
Завершенные тесты: 1
23.03.2015, 16:57 #8
я сказал спасибо, но по-прежнему считаю что она там есть
1
androbro
326 / 286 / 60
Регистрация: 17.10.2014
Сообщений: 843
23.03.2015, 17:03 #9
Паблито, ну если нам fanatjan предоставит реализацию метода Enemy.MyOnDraw(canvas), то сможем убедится в присутствии рекурсии, либо же ее отсутствии
0
fanatjan
0 / 0 / 0
Регистрация: 20.09.2011
Сообщений: 52
23.03.2015, 17:19  [ТС] #10
Паблито
Вот так печатаю в логе, у меня там 4 объекта рисуется.
Java
1
2
3
4
5
6
7
8
9
int num = 0;
while(i.hasNext()) 
          {
              num++;
              Enemy e = i.next();
              e.MyOnDraw(canvas);
              Log.d("num = " + Integer.toString(num), " ");
              //canvas.drawCircle(e.m_x+e.myWidth/2, e.m_y+e.myWidth/2, e.myWidth/2, paint);
          }
Вот результат
03-23 18:18:31.145: D/num = 1(13807):
03-23 18:18:31.856: D/num = 2(13807):
03-23 18:18:32.957: D/num = 3(13807):
03-23 18:18:34.258: D/num = 4(13807):
Никакой рекурсии там нет.
0
Pablito
2494 / 1939 / 605
Регистрация: 12.05.2014
Сообщений: 6,798
Завершенные тесты: 1
23.03.2015, 17:25 #11
то есть существует два класса, в которых есть метод void MyOnDraw(Canvas canvas) ?
вот беда
1
fanatjan
0 / 0 / 0
Регистрация: 20.09.2011
Сообщений: 52
23.03.2015, 17:29  [ТС] #12
В смысле?Рисовать все нужно только в одном onDraw? но так же получается достаточно проблематично. Что мне все в одном классе реализовать?)))
0
Pablito
23.03.2015, 17:30
  #13

Не по теме:

я имел ввиду что есть класс Enemy и еще какой-то другой класс, в котором есть два метода с одинаковым названием?
тот код из первого сообщения, он из какого класса?

0
fanatjan
0 / 0 / 0
Регистрация: 20.09.2011
Сообщений: 52
23.03.2015, 17:36  [ТС] #14
Паблито Есть 2 класса в которых методы с одинаковым названием(У каждого по 1 MyOnDraw), MyOnDraw - рисуют объекты данного класса.

Добавлено через 1 минуту
Ребят а по проблеме догадки какие нибудь есть? В коком направлении копать?
0
Pablito
23.03.2015, 17:39     Падает скорость объектов на экране при нажатии
  #15

Не по теме:

это и были догадки по проблеме, кто мог подумать
а где сам код, который рисует?

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

падает скорость интернет при закачке файлов - Софт
пользуюсь usbмодемом . при закачке файлов dowload master скорость падает до нуля раньше этого не было, может дело в каких то настройках?

Падает скорость интернета при пользовании торрентами - Софт
Всем доброго времени суток, Я пользуюсь двумя торрент - клиентами: MediaGet и Zona( не сочтите за рекламу), проблема состоит в том, что...

Скорость процессора падает при включении игр - Процессоры
У меня когда не играю скорость 2.8 GHz Когда играю 1.87 GHz WTF Ноутбук lenovo g505s ЦП AMD A8-5550M APU with...

При загрузке через GoogleChrome падает скорость до 0 Б/с - Wi-Fi
Windows 8.1. Роутер D-Link DIR300. Раньше было всё хорошо а щас такая фигня.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.03.2015, 17:39
Ответ Создать тему
Опции темы

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