Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для Александер2000
7 / 7 / 0
Регистрация: 29.06.2013
Сообщений: 218

Блокирование движение за границу экрана

10.04.2017, 23:21. Показов 2321. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, начинающий познаватель сей многожрущий оперативки операционки. И вопрос возник интересный
эксперементировал с движением, и осознал одну простую вещь, как заблокировать движение героя за границу?!
допустим на яве, я бы прописал условие если движение верх и радиус не меньше ширины, идти.

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

Java
1
2
3
4
5
6
7
public void moveElainaHowTouchAt(int xx, int yy){
        int dx = (xx - x) * eSpeed / bitmap.getWidth();
        int dy = (yy - y) * eSpeed / bitmap.getHeight();
        x += dx;
        y += dy;
 
    }
и так же, вопрос, опяь же, в яве просто задаешь ширину высоту какую надо, или иногда я юзал создавал клетку и перемножал ее и получал ширину высоту. А можно ли так получить что-нибудь в андройд?
Миниатюры
Блокирование движение за границу экрана  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.04.2017, 23:21
Ответы с готовыми решениями:

Блокирование определенной части экрана
Мне стало интересно, а как можно сделать такое: запускается программа, которая блокирует все нажатия мышью на правый нижний угол (ну...

Панель вышла за границу экрана
Собсна...скрылась, и не выезжает почему-то... на скрине она в виде полоски слева...

Блок, выходящий за границу экрана
Имеется резиновый сайт. В правой части - несколько блоков с контентом. Эти блоки имеют справа декоративные ленточки. Требуется сделать...

4
77 / 76 / 57
Регистрация: 07.08.2016
Сообщений: 173
10.04.2017, 23:35
Вы же на Canvas рисуете? У объекта Canvas есть методы getWidth и getHeight.
Соответственно, что-то вроде этого:
Java
1
2
if (x <= 0 || x >= canvas.getWidth())
    speed = 0;
Если x меньше нуля или больше возможно ширины, скорость равна 0. Только надо ещё продумать, чтоб фигурка не выходила за границы, подкорректировать значения на ширину самой девочки.
0
 Аватар для Александер2000
7 / 7 / 0
Регистрация: 29.06.2013
Сообщений: 218
11.04.2017, 17:06  [ТС]
Kir-malishev, не помогло, потому, что кривенько все. Где по статьи инфу взял, где что. От того, как-то не так все, ща переделаю все сначала, сам все сделаю как надо. И все получиться, если что отпишусь вновь, ждите

Добавлено через 1 час 24 минуты
Ребятульки, собственно я маленько запутался, подскажите.
Java
1
2
3
4
5
public void moveElainaHowTouchAt(int xx, int yy){
* * * * int dx = (xx - x) * eSpeed / bitmap.getWidth();
* * * * int dy = (yy - y) * eSpeed / bitmap.getHeight();
* * * * x += dx;
* * * * y += dy;
вот здесь, главный герой бегает за тачскрином, но бегает с увеличеной скоростью от дальности нажатия. Как сделать чтобы скорость перемещения была всегда фиксирована? ну, чтобы он одинаково бегал независимо от координаты нажатия
0
77 / 76 / 57
Регистрация: 07.08.2016
Сообщений: 173
11.04.2017, 20:16
Ну, тут уже начинаются физика с математикой.
В общем, так:

1.Получаете вектор и точки начала движения в точку конца движения:

https://www.cyberforum.ru/cgi-bin/latex.cgi?(x1 - x0;  y1 - y0) = (\Delta x; \Delta y)

2.Дальше нужно спроецировать его на оси координат, т.е. найти cos и sin:

https://www.cyberforum.ru/cgi-bin/latex.cgi?\cos \alpha = \Delta x / \sqrt{{\Delta x}^{2} + {\Delta y}^{2}}

https://www.cyberforum.ru/cgi-bin/latex.cgi?\sin \alpha = \Delta y / \sqrt{{\Delta x}^{2} + {\Delta y}^{2}}

3.И умножить скорость на cos (получим скорость по x) и на sin (получим скорость по y:

https://www.cyberforum.ru/cgi-bin/latex.cgi?V = 5

https://www.cyberforum.ru/cgi-bin/latex.cgi?{V}_{x} = V*cos\alpha

https://www.cyberforum.ru/cgi-bin/latex.cgi?{V}_{y} = V*sin\alpha

4.В конце концов, каждую единицу времени прибавляйте к x и y соответствующие скорости.
0
 Аватар для Александер2000
7 / 7 / 0
Регистрация: 29.06.2013
Сообщений: 218
11.04.2017, 20:23  [ТС]
Цитата Сообщение от Kir-malishev Посмотреть сообщение
4.В конце концов, каждую единицу времени прибавляйте к x и y соответствующие скорости.
спасибо я понял. в школе был бандитом, потому, пробелы жетские. Я попробую, отпишусь будет ли успех)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.04.2017, 20:23
Помогаю со студенческими работами здесь

Запрет перемещения формы за границу экрана
как запретить форме выходить за пределы экрана?

Запретить объекту выходить за камеру(границу экрана)
Игра 2D, Границы камеры и есть граница экрана, как запретить объекту которым управляет игрок(WASD), выходить за камеру?

Движение картинки от центра экрана — по диагоналям ко всем углам экрана с уменьшением размера
нужно чтобы картинка двигалась от центра экрана - по диагоналям ко всем углам экрана с уменьшением размера заранее спасибо

Asus Eee PC 1015PD нижняя часть изображения выходит за границу экрана
На нетбуке Asus Eee PC 1015PD нижняя часть изобразения выходит за границу экрана, причем данная проблема не только в операционной системе...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru