Реализация TOUCH (TO SCREEN)

Если вы обнаружили какие либо ошибки, недочеты и неудобства или другие незачеты в программе напишите нам об этом на этом форуме - мы бум исправлять
akela9229
Сообщения: 2
Зарегистрирован: 04 июн 2019, 16:24

Реализация TOUCH (TO SCREEN)

Сообщение akela9229 » 04 июн 2019, 16:31

Господа. Окей, у нас бразуер на хромиуме. Мы имитируем какой-то мобильный браузер (андроидовский Mobile chrome или Mobile Safari).
Но, в этом случае, браузер должен реагировать иначе. Мышки - нет, hover события - нет, скролл-бара - нет. Как имитировать скролл пальцем? — непонятно. Если эмулировать ЛКМ, потом тянуть с зажатым ЛКМ вверх/вниз — браузер это воспринимает как выделение текста, а не скроллинг как на мобильном устройстве.
Есть у кого идеи (костыля, или может нет)?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 2598
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Реализация TOUCH (TO SCREEN)

Сообщение bigfozzy » 04 июн 2019, 18:56

скоро - сделаем

Вот будет такая функция - через которую можно будет все touch комбинации сделать :
mouse->send_touch(int id, int touch_type, int x, int y, int radiusX = 0, int radiusY = 0, float rotationAngle = 0, float pressure = 0, int modiefiers = 0, int pointerType = 0)


+ настройка поддержки Touch событий

ориентировочно к концу недели.

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 2598
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Реализация TOUCH (TO SCREEN)

Сообщение bigfozzy » 05 июн 2019, 00:04

сделано:
mouse->send_touch(int id, int touch_type, int x, int y, int radiusX = 0, int radiusY = 0, float rotationAngle = 0, float pressure = 0, int modiefiers = 0, int pointerType = 0)

id : идентификатор касания - одновременно можно 16 пальцев задавать (0 .. 15)
touch_type : тип касания (Released = 0, Pressed = 1, Moved = 2, Cancelled = 3)
x : x - координата касания
y : y - координата касания
radiusX : радиус касания по X (в пискселях)
radiusY : радиус касания по Y (в пискселях)
rotationAngle : угол поворота (в радианах)
pressure : давление (от 0 до 1)
modiefiers : модификаторы клавиатуры ( None = 0, CapsLockOn = 1, ShiftDown = 2, ControlDown = 4, AltDown = 8, LeftMouseButton = 16, MiddleMouseButton = 32, RightMouseButton = 64,)
pointerType: тип устройства( Touch = 0, Mouse = 1, Pen = 2, Eraser = 3 )

akela9229
Сообщения: 2
Зарегистрирован: 04 июн 2019, 16:24

Re: Реализация TOUCH (TO SCREEN)

Сообщение akela9229 » 05 июн 2019, 14:33

Спасибо, будем пробовать, отпишусь

voronov9988
Сообщения: 5
Зарегистрирован: 06 май 2019, 16:57

Re: Реализация TOUCH (TO SCREEN)

Сообщение voronov9988 » 12 июн 2019, 19:38

Попробовали $mouse->send_touch
для теста взяли сайт гугла и пытались нажать на кнопку "Поиск в Google"
но ни одного удачного касания на клик, так и не произошло

пробовали вот так
$el = $button->get_by_name("btnK");
var_dump($mouse->send_touch(1, 0, rand($el->get_x(), $el->get_width()), rand($el->get_y(), $el->get_height()), rand(5, 10), rand(10, 20), 15, rand(0.3, 0.9), 0, 0));

Пытались перебрать разные значения touch_type и modiefiers, но это не помогло, ходя в каких то случаях на кнопке было видно событие hover, без итогового нажатия на копку, при этом var_dump всегда выдает true

Подскажите пожалуйста, что мы делаем не так и желательно добавить send_touch в мануал с подробным описанием, как эмулировать касание на клик, скролить экран и т.д.

Так же было бы хорошо добавить этот метод в классы DOM (button, div и прочие), чтоб можно было кликать по этим элементам без доп вычислений

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 2598
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Реализация TOUCH (TO SCREEN)

Сообщение bigfozzy » 16 июн 2019, 21:53

спасибо, посмотрим

wal
Сообщения: 52
Зарегистрирован: 16 апр 2009, 22:47

Re: Реализация TOUCH (TO SCREEN)

Сообщение wal » 15 ноя 2019, 12:02

есть какие-то новости по этой теме?

примеры как использовать (в помощи очень скудная информация)?

спасибо!

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 2598
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Реализация TOUCH (TO SCREEN)

Сообщение bigfozzy » 15 ноя 2019, 13:19

Да, все работает:
// 1 
echo "1. Перейдем на yahoo : ";
echo $browser->navigate("http://www.yahoo.ru")."<br>";

// 2 
echo "2. Коснемся в точке 500,500 : ";
echo $mouse->move(500,500)." ";
echo $mouse->send_touch(0,1,500,500)." ";
echo $mouse->send_touch(0,0,500,500)."\n";
движение пальцем по экрану
// 1
echo "1. Перейдем в yahoo : ";
echo $browser->navigate("https://yahoo.com")."<br>";

// пауза
sleep(2);

// 2 
echo "2. Перейдем к точке 100,100 по линии за 1000 мс: ";
echo $mouse->send_touch_to(100,400,100,100,"line",1000)."\n";

wal
Сообщения: 52
Зарегистрирован: 16 апр 2009, 22:47

Re: Реализация TOUCH (TO SCREEN)

Сообщение wal » 15 ноя 2019, 16:06

в помощи совсем нет ифнормации про send_touch_to... :?

wal
Сообщения: 52
Зарегистрирован: 16 апр 2009, 22:47

Re: Реализация TOUCH (TO SCREEN)

Сообщение wal » 18 ноя 2019, 11:10

в продолжение темы:

как отскролить страницу в обратную сторону(знак - не помогает)?
а как отправить сразу 2 и более касаний?
или например сделать zoom?
Последний раз редактировалось wal 18 ноя 2019, 11:25, всего редактировалось 1 раз.

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 2598
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Реализация TOUCH (TO SCREEN)

Сообщение bigfozzy » 18 ноя 2019, 11:24

wal писал(а):
18 ноя 2019, 11:10
в продолжение темы:

а как отправить сразу 2 и более касаний?
или например сделать zoom?
http://humanemulator.net/objects/SYSTEM ... _touch.php

Первый параметр это идентификатор пальца от 0 до 16:
echo $mouse->send_touch(0,1,500,500);
echo $mouse->send_touch(1,1,550,550);

echo $mouse->send_touch(1,0,550,550);
echo $mouse->send_touch(0,0,500,500);
т.е вот код касания двумя пальцами и отпусканием в одной точке, если перед отпусканием менять координату , передавая $touch_type=2 для соответствующего пальца - то будет масштабирование или другое действие.

wal
Сообщения: 52
Зарегистрирован: 16 апр 2009, 22:47

Re: Реализация TOUCH (TO SCREEN)

Сообщение wal » 18 ноя 2019, 11:26

а как отскролить страницу в обратную сторону(знак - не помогает)?

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 2598
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Реализация TOUCH (TO SCREEN)

Сообщение bigfozzy » 18 ноя 2019, 11:27

По send_touch - вот пока пример:
// 1
echo "1. Перейдем в yahoo : ";
echo $browser->navigate("https://yahoo.com")."<br>";

// пауза
sleep(2);

// 2 
echo "2. Перейдем к точке 100,100 по линии за 1000 мс: ";
echo $mouse->send_touch_to(100,400,100,100,"line",1000)."\n";
параметры аналогичны send_move_to, чуть позже обновим справку.

Аватара пользователя
bigfozzy
Site Admin
Сообщения: 2598
Зарегистрирован: 28 июл 2008, 17:24
Контактная информация:

Re: Реализация TOUCH (TO SCREEN)

Сообщение bigfozzy » 18 ноя 2019, 11:28

wal писал(а):
18 ноя 2019, 11:26
а как отскролить страницу в обратную сторону(знак - не помогает)?
передать меньшую или большую координату

wal
Сообщения: 52
Зарегистрирован: 16 апр 2009, 22:47

Re: Реализация TOUCH (TO SCREEN)

Сообщение wal » 18 ноя 2019, 11:31

bigfozzy писал(а):
18 ноя 2019, 11:28
wal писал(а):
18 ноя 2019, 11:26
а как отскролить страницу в обратную сторону(знак - не помогает)?
передать меньшую или большую координату
работает, спасибо!

Ответить