Adobe Scene7 BasicZoomViewer: как сбросить масштаб - PullRequest
0 голосов
/ 03 мая 2019

Вопрос

Я работаю с Adobe Scene7 BasicZoomViewer и ищу способ сообщить ZoomViewer, чтобы сбросить масштабирование, чтобы пользователь больше не увеличивал масштаб.изображение, но вместо этого будет показан уровень масштабирования по умолчанию.

То, что я нашел

Самое близкое, что я нашел к тому, что мне нужно, это reset свойство ZoomView.reset , который «Сбрасывает окно просмотра при изменении кадра (изображения). Если установлено значение 0, оно сохраняет текущее окно просмотра с наилучшим возможным соответствием, сохраняя соотношение сторон вновь установленного изображения».

Это похоже на то, что мне нужно, но в нем говорится, что оно сбросит или сохранит соотношение сторон, когда будет вставлено новое изображение, но я не вставляю новые изображения.

Демонстрацияот Adobe

На изображении есть кнопка, которую API вставляет на страницу, которая сбрасывает уровень масштабирования.Adobe предоставляет демонстрационную страницу , которая показывает, с чем я работаю.Если вы посмотрите внизу слева, самая правая кнопка - кнопка сброса.При щелчке он должен выполнить какой-то вызов API, и мне нужно выяснить, какой из них.

Редактировать

Мне удалось найти уменьшенную версию BasicZoomViewer , и в настоящее время я пытаюсь разобраться в коде.

На «кнопке сброса масштаба» находится прослушиватель событий, который просто вызывает reset () метод в строке 274 в увеличенной версии файла.В настоящее время я пытаюсь разобраться в файле и выяснить, как получить доступ к этому методу.

c.zoomResetButton.addEventListener("click", function () {
  c.zoomView.zoomReset()
});

1 Ответ

0 голосов
/ 04 мая 2019

Я отвечу на свой вопрос. Если кто-то найдет лучший способ, пожалуйста, не стесняйтесь ответить.

tldr;

Создайте переменную для хранения экземпляра вашего s7viewers.BasicZoomViewer () , а внутри него вы можете получить доступ к обработчикам событий и многому другому.

Пример вызова обработчика сброса зума

// instantiate the s7viewers class and save it in a variable
var s7BasicZoomViewer = new s7viewers.BasicZoomViewer({
  containerId: 's7viewer',
  params: {
    asset: assetUrl,
    serverurl: serverUrl
})

// example of how to call the "zoomReset()" method
s7BasicZoomViewer.zoomResetButton.component.events.click[0].handler()

Объяснение

После просмотра минимизированного кода, который был укрупнен, я обнаружил прослушиватель событий в s7zoomresetbutton имени класса DOM, или, возможно, он отслеживает идентификатор этого элемента DOM, который совпадает с идентификатором контейнера div для вашего S7 BasicZoom Viewer плюс некоторый добавленный текст, чтобы сделать этот идентификатор уникальным. Например, если div контейнера равен s7viewer , кнопка сброса масштаба будет иметь идентификатор s7viewer_zoomresetbutton .

Теперь, просматривая код, я обнаружил, что прослушиватель событий сообщает мне, что должен быть какой-то способ вызова zoomReset () метода.

c.zoomResetButton.addEventListener("click", function () {
  c.zoomView.zoomReset()
});

В приведенном выше коде значение c равно this или, другими словами, это экземпляр вашего S7 BasicViewerZoom , и в моем случае у меня есть несколько в зависимости от того, сколько изображений мне нужно увеличить.

При создании экземпляра класса s7viewers вы можете позднее обратиться к этому экземпляру и получить доступ к обработчикам событий для каждой кнопки и других свойств и методов.

Оттуда он просто просматривал объект, возвращенный из экземпляра, и вызывал обработчик для кнопки сброса .

...