Неправильная работа pick_object
30 июля 2017 12:45
Столкнулся с такой проблемой. Использую такой скрипт, для позиционирования канваса на странице:
при этом коряво работает функция pick_object. Объекты плохо выделяются, те идет не соответствие фактического расположения объекта. Объект можно выделить только если кликнуть совсем в другую часть экрана. Я не очень понимаю, как работает функция pick_object по этому в замешательстве..
onresize = function()
{
var bodyWidth = document.body.clientWidth
, bodyHeight = document.body.clientHeight;
var scalable = document.getElementById("main_canvas_container");
scale = Math.min(bodyWidth / 1920, bodyHeight / 1080);
scalable.style.top = (bodyHeight - (scalable.offsetHeight * scale)) / 2 + "px";
scalable.style.left = (bodyWidth - (scalable.offsetWidth * scale)) / 2 + "px";
scalable.style.webkitTransform = "scale(" + scale + ")";
}
onresize();
при этом коряво работает функция pick_object. Объекты плохо выделяются, те идет не соответствие фактического расположения объекта. Объект можно выделить только если кликнуть совсем в другую часть экрана. Я не очень понимаю, как работает функция pick_object по этому в замешательстве..
http://vg3d.ru
30 июля 2017 13:01
31 июля 2017 10:23
31 июля 2017 10:41
Поставьте канвас в контейнер и ресайзите его средствами CSS (`width:100%`). Если нужен фиксированный размер, так и ограничьте его также через CSS.
Вы меня немного не поняли) Мне нужно сделать так, что бы область охватываемая камерой была всегда неподвижна. Я с помощью этого скрипта задаю фиксированные пропорции канваса. Не размер, а пропорции. По этому даже при ресайзе окна браузера пропорции у канваса остаются такие же. Вот пример - https://playcanv.as/p/kx8rLnM1/
Понятно, что именно этот скрипт мешает работе pick_object.
http://vg3d.ru
31 июля 2017 22:58
01 августа 2017 08:32
Ответ на сообщение пользователя Дмитрий Пелевин
Ну тогда вам нужно координаты указателя мыши также скейлить.
Но вообще это неправильный, очень очень очень неправильный подход.
Лучше дожидаться окончания изменения размеров экрана и перемещать камеру в нужный чек пойнт, либо искать другие варианты. Скейл вам подкинет проблем еще в разных браузерах…
Ну скажем так, скейл работает во всех современных браузерах отлично. Мне этого достаточно. Да и другого выхода вроде, как нет для моей задачи.
Пока реализовал все через нодовую логику. Очень странно, но она работает корректно со скейлом. Я так понял это совершенно разные функции.
А кроме pick_object и лучей, есть еще способы выделения объектов?
http://vg3d.ru
01 августа 2017 10:24
Если проблема та, о которой я думаю, то вам поможет пересчет координат: ссылка
- для нодовой логики это происходит автоматически.
- для нодовой логики это происходит автоматически.
01 августа 2017 11:09
Ответ на сообщение пользователя Иван ЛюбовниковОгромное спасибо, простите за мою невнимательность! Это то, что нужно
Если проблема та, о которой я думаю, то вам поможет пересчет координат: ссылка
- для нодовой логики это происходит автоматически.
http://vg3d.ru