Spec-Zone.ru › Web APIs

PointerEvent: метод getCoalescedEvents()

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.

Метод getCoalescedEvents() интерфейса PointerEvent возвращает последовательность PointerEvent экземпляров, которые были объединены (слиты) в один pointermove или pointerrawupdate событие. Вместо потока множества pointermove событий, пользовательские агенты объединяют несколько обновлений в одно событие. Это помогает производительности, так как пользовательский агент выполняет меньше обработки событий, но происходит снижение точности при отслеживании, особенно при быстрых и больших перемещениях.

Метод getCoalescedEvents() позволяет приложениям получить доступ ко всем не объединённым изменениям позиции для точной обработки данных перемещения указателя в необходимых случаях. Необъединённые изменения позиции желательны в приложениях рисования, например, где доступ ко всем событиям помогает создавать более плавные кривые, которые лучше соответствуют движению указателя.

Для иллюстрации объединённых событий см. Рисунок 7 в спецификации.

Синтаксис

getCoalescedEvents()

Параметры

Нет.

Возвращаемое значение

Последовательность экземпляров PointerEvent.

Пример

HTML

<canvas id="target" width="600" height="300"></canvas>

JavaScript

const canvas = document.getElementById("target");
const ctx = canvas.getContext("2d");

const pointerEvents = [];

function drawCircle(x, y, color) {
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  // draw the last 20 events
  if (pointerEvents.length > 20) {
    pointerEvents.shift();
  }
  pointerEvents.push({ x, y, color });

  for (const pointerEvent of pointerEvents) {
    ctx.beginPath();
    ctx.arc(pointerEvent.x, pointerEvent.y, 10, 0, 2 * Math.PI);
    ctx.strokeStyle = pointerEvent.color;
    ctx.stroke();
  }
}

canvas.addEventListener("pointermove", (e) => {
  // draw a circle for the current event
  drawCircle(e.clientX, e.clientY, "black");

  const coalescedEvents = e.getCoalescedEvents();
  for (let coalescedEvent of coalescedEvents) {
    // give it an offset so we can see the difference and color it red
    drawCircle(coalescedEvent.clientX + 20, coalescedEvent.clientY + 20, "red");
  }
});

Результат

Спецификации

Спецификация
Pointer Events
# dom-pointerevent-getcoalescedevents

Совместимость с браузерами

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
getCoalescedEvents 58 79 59 45 18.2 58
79Метод всегда возвращает пустой массив, независимо от действий пользователя.
43 18.2 7.0 58

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/getCoalescedEvents

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API