Как сделать правильный курсор в виртуальных турах Pano2VR

 Работа в Pano2VR | Создание VR-панорам и виртуальных туров
 18.12.2018    23:15    4.3k    22.12.2018
 Время на чтение: ...    Комментировать    Напечатать
Содержание статьи
 Пользователи Pano2VR

В своем сообществе ВКонтакте работает чат, созданный специально для пользователей конвертера панорамных изображений Pano2VR. В нем мы решаем проблемы, возникающие в работе с Pano2VR, обмениваемся опытом и просто общаемся.

 Нас уже ...
Заменяем курсор из стандартной стрелки на "Grabbing cursor" в виртуальных турах формата HTML5, создаваемых в программе Pano2VR

Как сделать правильный курсор в виртуальных турах Pano2VR

Изображение

В виртуальных турах формата HTML5, создаваемых в программе Pano2VR курсор мыши отображается как стандартная стрелка. То ли это недоработка, то ли это так должно быть. В данной статье, вы узнаете, как заменить курсор на "Grabbing cursor" – руку, которая при нажатии кнопки мыши в области панорамы принимает вид зажатой руки. Таким же образом можно будет установить любой курсор, в том числе и собственный.

Первый пример показывает, как выглядит просмотр панорамы со стандартными курсором.

Вид курсора Grab / Grabbing

В этом примере будет произведена замена стандартного курсора. Как выглядят курсоры вы можете проверить, наведя курсор мыши на слова "Grab" и "Grabbibg" в заголовке раздела.

Создадим два правила CSS в секции style. Селектор .cursor-grabing определяет вид курсора при нажатии кнопки мыши. Селектор .cursor-grab определяет вид курсора при не нажатой кнопке мыши.

Важный момент. Элементам оформления (скина), таким как кнопкам, необходимо назначать вид курсор вида pointer, или стандартный для остальных элементов, через свойства CSS в настройках элемента. Это нужно для того, чтобы вид курсора не перекрывался тем, что будет установлен.

.cursor-grabing {
   /* cursor: url(images/grabbing.cur); Собственный курсор */
   cursor: -webkit-grabbing !important;
   cursor: -moz-grabbing !important;
   cursor: grabbing !important;
}

.cursor-grab {
   /* cursor: url(images/grab.cur); Собственный курсор */
   cursor: -webkit-grab !important;
   cursor: -moz-grab !important;
   cursor: grab !important;
} 

Обязательно используем декларацию !important для повышения приоритета свойств CSS.

В секции script после инициализации объекта pano добавим следующий код, написанный с использованием библиотеки jQuery.

$("#container > div:first").find("div:eq(1)").on({
  //Нажатие кнопки мыши
  "mousedown": function (e) {
    //Меняем классы с cursor-grab на cursor-grabing
    $(this).addClass("cursor-grabing");
    $(this).removeClass("cursor-grab");
    return false;
  },
  //Отпускание кнопки мыши
  "mouseup": function (e) {
    //Меняем классы с cursor-grabing на cursor-grab
    $(this).removeClass("cursor-grabing");
    $(this).addClass("cursor-grab");
  }
});

//Текущий вид курсора
$("#container > div:first").find("div:eq(1)").addClass("cursor-grab"); 

#container – это идентификатор элемента, который служит областью воспроизведения панорамы.

Вид курсора в зависимости от режима DRAG / MOVE

А что если вид курсора устанавливать в зависимости от режима вида: перетаскивание (Drag), когда зритель нажимает кнопку мыши и перетаскивает панораму нужную сторону (этот режим включен по умолчанию), или движение (Move), когда панорама вращается в сторону, куда смещается курсор относительно точки, где была нажата кнопка мыши.

Для этого создадим еще одно правило, определяющее курсор в виде стрелок, направленных в четыре стороны.

.cursor-move {
  cursor: move !important;
} 

Код скрипта будет следующим:

$("#container > div:first").find("div:eq(1)").on({
  //Нажатие кнопки мыши
  "mousedown": function(e) {
    //Определяем режим вида
    if (pano.getViewMode() == 0) {
      //Если это 0, значит режим move
      $(this).addClass("cursor-move");
    } else {
      //Иначе - drag
      $(this).addClass("cursor-grabing");
      $(this).removeClass("cursor-move");
    }
    //Вне зависимости от режима удаляем класс cursor-grab
    $(this).removeClass("cursor-grab");
    return false;
  },
  //Отпускание кнопки мыши
  "mouseup": function(e) {
    //Вне зависимости от режима удаляем класс cursor-grabing
    $(this).removeClass("cursor-grabing");
    //Определяем режим вида
    if (pano.getViewMode() == 1) {
      //Если это 1, значит режим drag
      $(this).addClass("cursor-grab");
    }
  }
});

//Текущий вид курсора
if (pano.getViewMode() == 0) {
  $("#container > div:first").find("div:eq(1)").addClass("cursor-move");
} else {
  $("#container > div:first").find("div:eq(1)").addClass("cursor-grab");
}

В отличие от режима drag, в котором курсор имел 2 состояния, в режиме move курсор будет одинаков при нажатой и при не не нажатой кнопке мыши.

Собственный курсор

Собственный курсор устанавливается через CSS c указанием имени файла курсора.

.cursor-custom {
  cursor: url(images/custom.cur), auto !important;
}

В качестве имени файла указывается изображение в формате .png и .cur. Формат .png поддерживается не всеми браузерами. Поэтому рекомендуется использовать формат .cur.

Если кому-то нужны коды скриптов на чистом Javascript, пишите в комментарии.

Демонстрационные примеры не оптимизированы под мобильные устройства. Рекомендуется просмотр в браузерах на ПК.

Исходный код примеров можно просмотреть в браузере, нажав специальную комбинацию клавиш. Обычно это Ctrl + U.

Как вам материал?

0 реакции
👍
0
👎
0
😂
0
😱
0
😡
0
😢
0
Поделитесь материалом в социальных сетях

У Вас остались вопросы по статье? Задавайте. Буду рад ответить на них в комментариях.

Если этот материал совсем не то, куда Вас привел поисковик, попробуйте выполнить поиск по сайту или введите запрос в строку ниже. Также Вы можете посмотреть другие материалы в разделе статьи.

ТЕГИ МАТЕРИАЛА:
Об авторе

Сергей Дишук, фотограф-любитель и профессионал. Занимаюсь пейзажной, архитектурной, интерьерной, репортажной фотосъемкой, а также другими видами фотосъемки. Связал жизнь с IT, увлекаюсь программированием и разработкой программного обеспечения.

Занимаюсь панорамной фотосъемкой и созданием виртуальных 3D-туров более 8-ми лет. Имею опыт работы в программах Pano2VR, PTGui, Photomatix, Adobe Photoshop, Lightroom и других.

Реализовал некоторые фичи в проектах Pano2VR задолго до их официального появления. За всё время помог разобраться с Pano2VR более 5k пользователям, из них более 200 лично.

Материалы по теме статьи
Возможно, Вас заинтересуют эти материалы
Самое читаемое
Нет комментариев

Получите доступ к эксклюзивному контенту, оформив платную подписку.

VK Donut
 
Платные темы OK
 
Boosty
 
Patreon
 
Сейчас просматривают
Опрос
Оцените ваши впечатления от сайта?
Всего проголосовавших: 46
Последние новости
ChatGPT научился создавать изображения

Раньше обращался к ChatGPT с запросами написания контент-плана, статьи, программного кода. Теперь у ...

 События
 10.04.2025    12:21    449    0
Фотопрогулка по лесу в апреле

Прогулка по лесу с фотоаппаратом – это настоящее удовольствие для души и глаз. Однажды в апреле, ког...

 События
 06.04.2025    18:05    279    0
10 невероятных новостей из мира фотографии, в которые сложно поверить

Фотография – это не просто хобби, а стиль жизни. Каждый день появляются новые технологии, открытия и...

 События
 01.04.2025    14:55    366    0
Последние статьи
Фотосъемка текстур и паттернов

Это направление в фотографии наряду с такими как пейзаж, портрет, макросъемка, предметная фотосъемка...

 Статьи по фотографии
 10.04.2025    10:22    300    0
Зеленый цвет в фотографии и не только

На этих фотографиях в статье доминирует зеленый — цвет жизни, баланса и гармонии. Он окружает нас в ...

 Статьи по фотографии
 08.04.2025    08:50    234    0
Фотосъемка с проводкой: как передать движение в кадре

Съемка с проводкой – это прием фотосъемки, при котором вы ведете камеру за движущимся объектом со ск...

 Статьи по фотографии
 05.04.2025    08:10    394    0
Онлайн всего: 1
Гостей: 1
Пользователей: 0