Вам доступны подписки на некоторые события.
Базовые методы подписок
ipano.on(eventName, handler)
Постоянная подписка на событие.
ipano.on("scenechange", (e) => {
console.log("scenechange", e);
});
ipano.once(eventName, handler)
Разовая подписка: обработчик вызовется один раз и автоматически снимется.
ipano.once("scenerender", (e) => {
console.log("Сцена отрисована", e.sceneId);
});
ipano.off(eventName, handler): void
Явное снятие подписки по ссылке на тот же handler.
function onReady(e) {
console.log("ready", e);
}
ipano.on("ready", onReady);
ipano.off("ready", onReady);
Список событий
ready
Все скрипты готовы, движек панорам и API готовы принимать комманды API. Но, панорама еще не показана.Событие отдает краткую информацию о туре и стартовую сцену.
{
tour: {
id: "ipoi3po", // id тура
title: "Название тура"
},
initialSceneId: "scene-1" // стартовая сцена.
}
started
тур стартовал, вызывается один раз. Только после этого события, можно включать аудио и видео на сцене.
{
sceneId: "scene-1"
}
scenechange
Событие происходит, когда инициализирована смена сцены (переход на другую панораму), но сцена еще фактически не сменилась.
{
fromSceneId: "scene-1",
toSceneId: "scene-2"
}
scenerender
Сцена готова показывать первый кадр. Происходит и при старте тура и при переходах.
{
sceneId: "scene-2"
}
viewchange
Смена положения камеры. Старайтесь не вешать тяжелые обработкичи на это событие, так как смена положения камеры, это очень частое явление.
{
sceneId: "scene-2",
view: {
yaw: 10,
pitch: -5,
hfov: 100
}
}
Специализированные подписки на объекты
ipano.watchObjectVisibility(objectId, handler)
Подписка на смену видимости объекта. Если объект в кадре, вызывается сразу
const offWatch = ipano.watchObjectVisibility("interactive:42", (e) => {
console.log("visibility:", e.visible);
});
ipano.onObjectEnterView(objectId, handler)
Срабатывает, когда объект входит в поле зрения. Если уже виден на момент подписки, может вызваться сразу.
const offEnter = ipano.onObjectEnterView("interactive:42", (e) => {
console.log("entered view:", e.objectId);
});
ipano.onObjectLeaveView(objectId, handler)
Срабатывает, когда объект уходит из поля зрения.
const offLeave = ipano.onObjectLeaveView("interactive:42", (e) => {
console.log("left view:", e.objectId);
});