"Ловля" события полного экрана
30 октября 2016 00:34
Потихоньку "пилю" веб-приложение.
Реализовал авторотацию модели через
Реализовал переключение в фулскрин по клику на объект сцены
При клике канвас переходит в полноэкранный режим, но разумеется сбивается авторотация .
Пробую автоматически запустить авторотацию после команды перехода на фулскрин последовательно выполняя команды
Не включается авторотация.
Пытаюсь поймать фулскрин (точнее переключение состояния) через
И уже в функции "setrotation" выполнить "m_cam.auto_rotate(0.1);" - не получается.
не работает также EventListener "fullscreenchange".
Как правильно инициировать авторотацию при смене окно\фулскрин
Реализовал авторотацию модели через
m_cam.auto_rotate(0.1);
Реализовал переключение в фулскрин по клику на объект сцены
m_app.request_fullscreen(container_id);
При клике канвас переходит в полноэкранный режим, но разумеется сбивается авторотация .
Пробую автоматически запустить авторотацию после команды перехода на фулскрин последовательно выполняя команды
m_app.request_fullscreen(container_id);
m_cam.auto_rotate(0.1);
Не включается авторотация.
Пытаюсь поймать фулскрин (точнее переключение состояния) через
document.addEventListener("webkitfullscreenerror", setrotation, false);
И уже в функции "setrotation" выполнить "m_cam.auto_rotate(0.1);" - не получается.
не работает также EventListener "fullscreenchange".
Как правильно инициировать авторотацию при смене окно\фулскрин
01 ноября 2016 15:03
При клике канвас переходит в полноэкранный режим, но разумеется сбивается авторотация .Вроде, не должно такого быть. Проверьте на любой демке с вебплеером - там у вас работает? Отличие только, что в вебплеере клик идет по html-кнопкам, а у вас объект. Авторотация может сбрасываться, если подвигать мышью с зажатой левой кнопкой, ну т.е. как бы при взаимодействии пользователя с камерой.
01 ноября 2016 16:42
А, да, на вебплеере авторотация не сбивается.
В приложении фулскрин реализую кликом по объекту (квадратная плоскость приаттаченная к камере, как я увидел в демке или туториале здесь на сайте).
В принципе да, видимо помимо события "клик" на объекте сцены регистрируется еще и "драг", и сбивает авторотацию.
Я, видимо, так и подумал, и решил принудительно включать ротацию при смене режима.
Авторотация не включается, если её ставить сразу после реквестфулскрина ,как я написал ранее.
Включение по таймингу (допустим в 0.01 секунду ) тоже не вариант - пользователь должен иметь возможность осматривать статичный объект.
А яваскриптовский эвент что-то не ловится.
Видимо нужно вводить булевскую переменную фулскрина, и запускать авторотацию при её смене.
Ну, допустим я могу предположить, что конструкция
не срабатывает потому что на миллисекунду детектится драг.
Или надо покопаться в функциях и поставить переключение при mouseUP на объекте, т.к. после апа не детектится драг. Разумеется, если это позволяет движок.
В приложении фулскрин реализую кликом по объекту (квадратная плоскость приаттаченная к камере, как я увидел в демке или туториале здесь на сайте).
В принципе да, видимо помимо события "клик" на объекте сцены регистрируется еще и "драг", и сбивает авторотацию.
Я, видимо, так и подумал, и решил принудительно включать ротацию при смене режима.
Авторотация не включается, если её ставить сразу после реквестфулскрина ,как я написал ранее.
Включение по таймингу (допустим в 0.01 секунду ) тоже не вариант - пользователь должен иметь возможность осматривать статичный объект.
А яваскриптовский эвент что-то не ловится.
Видимо нужно вводить булевскую переменную фулскрина, и запускать авторотацию при её смене.
Ну, допустим я могу предположить, что конструкция
m_app.request_fullscreen(container_id);
m_cam.auto_rotate(0.1);
не срабатывает потому что на миллисекунду детектится драг.
Или надо покопаться в функциях и поставить переключение при mouseUP на объекте, т.к. после апа не детектится драг. Разумеется, если это позволяет движок.
07 ноября 2016 11:58
У меня так работает и не сбивается:
- как изначально крутится, так и после фулскрина
Может вы auto_rotate несколько раз вызываете; в документации написано:
"When it is called for the first time, auto-rotation is enabled while the next call will disable auto-rotation."
Если что, у метода request_fullscreen есть параметр enabled_cb - колбек сразу по включению - можно его попробовать.
function load_cb(data_id, success) {
if (!success) {
console.log("b4w load failure");
return;
}
m_app.enable_camera_controls();
// place your code here
document.addEventListener("mousedown", down_cb);
m_cam_anim.auto_rotate(0.1);
}
function down_cb(e) {
var obj = m_scenes.pick_object(e.clientX, e.clientY);
if (obj)
m_app.request_fullscreen(document.body);
}
- как изначально крутится, так и после фулскрина
Может вы auto_rotate несколько раз вызываете; в документации написано:
"When it is called for the first time, auto-rotation is enabled while the next call will disable auto-rotation."
Если что, у метода request_fullscreen есть параметр enabled_cb - колбек сразу по включению - можно его попробовать.
07 ноября 2016 12:07
Сейчас не помню, где получилась "нестыковка", но поэкспериментировав с режимами фулскрина я заметил что ИНОГДА ротация выключается, а иногда нет (при одинаковом то коде). Возможно из-за скорости ОТПУСКАНИЯ мыши после клика. Использовал mousedown.
В общем, используя mouseup и проверку при вкл\выкл фулскрина
победил.
В общем, используя mouseup и проверку при вкл\выкл фулскрина
if (m_cam.is_auto_rotate() == false) {
m_cam.auto_rotate(0.1);
}
победил.