Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
JavDev
0 / 0 / 1
Регистрация: 12.03.2016
Сообщений: 23
1

Вращение фигуры в SurfaceView

17.04.2017, 12:27. Просмотров 595. Ответов 16
Метки нет (Все метки)

Сейчас фигура вращается с помощью функции glRotate, все работает, и она вращается при запуске. Как сделать, чтобы фигура вращалась не автоматически, а при касании пальцем экрана? То есть, водишь пальцем по экрану и поворачиваешь фигуру.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2017, 12:27
Ответы с готовыми решениями:

Мерцание в SurfaceView
Всем привет! Рисую на SurfaceView фон и на нем анимированные объекты. Кадры...

Ошибка в SurfaceView
есть игра. отрисовка идет через SurfaceView и поток привязанный к нему....

Восстановление SurfaceView
Кто работал с SurfaceView, помогите! Рисую на SurfaceView с помощью...

SurfaceView не отображается
Учусь программировать по книге П. Дейтел, Х. Дейтел "Android для программистов....

SurfaceView + onKeyDown
Проблемка очень простая - не реагирует на onKeyDown в классе, наследующем...

16
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,003
17.04.2017, 17:53 2
JavDev, поймать тач событие
1
JavDev
0 / 0 / 1
Регистрация: 12.03.2016
Сообщений: 23
17.04.2017, 20:20  [ТС] 3
Цитата Сообщение от vxg Посмотреть сообщение
JavDev, поймать тач событие
Как я понимаю, создаем метод onTouchEvent, получаем координаты X и Y. Как в таком случае реализовать перемещение фигуры по экрану я понимаю, а как сделать, чтобы фигура вращалась, оставаясь на месте?
Сейчас вращение задается через
Java
1
gl.glRotatef(0.0f, 0.0f, 1.0f, 0.0f);
0
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,003
17.04.2017, 20:42 4
JavDev, например условно принять что драг на икс процентов ширины экрана соответствует повороту на игрек градусов вокруг некой оси
1
JavDev
0 / 0 / 1
Регистрация: 12.03.2016
Сообщений: 23
17.04.2017, 20:47  [ТС] 5
Цитата Сообщение от vxg Посмотреть сообщение
JavDev, например условно принять что драг на икс процентов ширины экрана соответствует повороту на игрек градусов вокруг некой оси
А проще это не реализовать?
0
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,003
17.04.2017, 21:30 6
JavDev, по-моему проще уже некуда
0
JavDev
0 / 0 / 1
Регистрация: 12.03.2016
Сообщений: 23
17.04.2017, 21:44  [ТС] 7
Цитата Сообщение от vxg Посмотреть сообщение
по-моему проще уже некуда
Видимо я не понял мысль
0
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,003
18.04.2017, 08:48 8
JavDev, вы надеялись что у серфейса есть специально для вашей сцены и вашей фигуры событие повернуть_через_драг)?
1
JavDev
0 / 0 / 1
Регистрация: 12.03.2016
Сообщений: 23
20.04.2017, 19:59  [ТС] 9
Цитата Сообщение от vxg Посмотреть сообщение
JavDev, вы надеялись что у серфейса есть специально для вашей сцены и вашей фигуры событие повернуть_через_драг)?
Ну сейчас то фигура крутится автоматически вокруг Y Думал, что сделать то же самое, но в ручном режиме будет не очень сложно. А как посчитать % ширины экрана не понимаю(
0
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,003
20.04.2017, 20:39 10
Цитата Сообщение от JavDev Посмотреть сообщение
посчитать % ширины экрана
это лишь пример - вы можете привязаться к пикселям или дп или чему угодно
а вообще
Java
1
2
3
4
5
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        
        float w = metrics.widthPixels;
        float h = metrics.heightPixels;
0
JavDev
0 / 0 / 1
Регистрация: 12.03.2016
Сообщений: 23
22.04.2017, 22:27  [ТС] 11
Цитата Сообщение от vxg Посмотреть сообщение
это лишь пример - вы можете привязаться к пикселям или дп или чему угодно
а вообще
А к углу поворота никак?
0
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,003
23.04.2017, 07:58 12
JavDev, как можно привязать угол поворота к углу поворота? Или вы о вращении устройства? Возможно все главное знать что хочешь
1
JavDev
0 / 0 / 1
Регистрация: 12.03.2016
Сообщений: 23
23.04.2017, 13:20  [ТС] 13
Цитата Сообщение от vxg Посмотреть сообщение
JavDev, как можно привязать угол поворота к углу поворота? Или вы о вращении устройства? Возможно все главное знать что хочешь
То есть, создаю onTouchEvent, ловлю событие, а далее передвижение пальца на % ширины экрана приравнять к определенному углу? Например, пока палец передвигается от центра к краю экрана, фигура поворачивается на 360 градусов вокруг оси, так?
А еще, не подскажете, как сделать запуск построения фигуры не при старте приложения, а по клику кнопки в activity? То есть я добавляю с экрана координаты X и Y, нажимаю кнопку и запускается построение с этими координатами? В интернете искал искал, но так и не нашел, везде построение запускается вместе со стартом приложения...Пытался с вызовом onDrawFrame что-то сделать, но ничего толком не вышло, координаты передаю, но перезапустить построение с ними не получается
0
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,003
23.04.2017, 16:05 14
JavDev, что мешает крутить в draw построение пустоты, а при нажатии кнопки начинать таки строить то что нужно?
1
JavDev
0 / 0 / 1
Регистрация: 12.03.2016
Сообщений: 23
23.04.2017, 16:31  [ТС] 15
Цитата Сообщение от vxg Посмотреть сообщение
JavDev, что мешает крутить в draw построение пустоты, а при нажатии кнопки начинать таки строить то что нужно?
Не знаю как "при нажатии кнопки начинать таки строить то что нужно". Я хотел сделать, чтобы изначально координаты были нулевые, соотв. ничего не отображалось, потом отправлять нужные координаты и уже перестроить. Вот нужные координаты я подцепил из edittext и отправил в private float vertices[] = {}, но запустить с ними не получается. Как понимаю, за построение отвечает метод public void onDrawFrame(), а в нем object3D.Draw(gl);
0
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,003
24.04.2017, 16:22 16
JavDev, не знаю как у вас, но когда я игрался с OpenGLES10 у меня было так:
-в MainActivity onCreate делал так
Java
1
2
3
4
5
6
        ...
        mainGLView = new MainGLSurfaceView(this);
        mainGLView .setOnTouchListener(...);
 
        setContentView(mainGLView);
        ...
-в конструкторе MainGLSurfaceView делал так
Java
1
2
3
4
5
        ...
        mainGLRenderer = new MainGLRenderer();
        setRenderer(mainGLRenderer);
        setRenderMode(RENDERMODE_CONTINUOUSLY);
        ...
-в MainGLRenderer onDrawFrame вызывался draw который рисовал сцену
-когда человек водил пальцем по экрану вызывался OnTouchListener меняющий то что нам нужно в сцене (для примера - сцена - это следующая за пальцем вращающаяся с частотой 0,2 Гц окружность диаметром 72dp из точек - я наблюдал как она следует за пальцем либо висит там где ее оставили)

прикрепляю пример в eclipse
1
Вложения
Тип файла: rar triangle_opengles10_test.rar (1.15 Мб, 5 просмотров)
JavDev
0 / 0 / 1
Регистрация: 12.03.2016
Сообщений: 23
25.04.2017, 22:55  [ТС] 17
vxg, Большое спасибо, буду разбираться

Проблему с обновлением фигуры частично решил запихнув в onSurfaceCreated цикл. Теперь фигура строится по нажатию кнопки, но только один раз))
0
25.04.2017, 22:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2017, 22:55

Работа с SurfaceView
Отрисовка в SurfaceView никогда не вызывала трудностей, до тех пор, пока не...

Воспроизведение видео в SurfaceView
Ребят прощу у вас помощи, возникла такая проблема необходимо воспроизвести...

SurfaceView сворачивание программы
@Override protected void onDraw(Canvas canvas){ //рисует игровое поле ...


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

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

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