Spec-Zone.ru › Web APIs

DelegatedInkTrailPresenter: метод updateInkTrailStartPoint()

Ограниченная доступность

Эта функция не является Baseline, так как она не работает во всех широко используемых браузерах.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Экспериментально: Это экспериментальная технология
Перед использованием в продуктовой среде тщательно проверьте таблицу совместимости браузеров.

Метод updateInkTrailStartPoint() интерфейса DelegatedInkTrailPresenter указывает, какой PointerEvent использовался в качестве последней точки рендеринга для текущей кадра, что позволяет компоузеру на уровне ОС отрисовать делегированный след пера до обработки следующего события указателя.

Синтаксис

requestPresenter(event, style)

Параметры

event Необязательно

Объект PointerEvent.

style

Объект, определяющий стиль следа, содержащий следующие свойства:

color

String, содержащий допустимый код цвета CSS, указывающий цвет, который будет использоваться презентером при рендеринге следа пера.

diameter

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

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

undefined.

Исключения

Error DOMException

Ошибка будет сгенерирована и операция прервана, если:

  • Свойство color не содержит допустимого кода цвета CSS.
  • Свойство diameter не является числом или меньше 1.
  • Элемент presentationArea удалён из документа до или во время рендеринга.

Примеры

Отрисовка следа пера

В этом примере мы рисуем след пера на 2D холсте. В начале кода мы вызываем Ink.requestPresenter(), передавая ему холст в качестве области презентации и сохраняя возвращённую промис в переменной presenter.

Позже, в обработчике события pointermove, новая позиция начала следа рисуется на холсте каждый раз при срабатывании события. Кроме того, объект DelegatedInkTrailPresenter, возвращённый после выполнения промиса presenter, имеет вызываемый метод updateInkTrailStartPoint(); ему передаются:

  • Последнее достоверное событие указателя, представляющее точку рендеринга для текущего кадра.
  • Объект style, содержащий настройки цвета и диаметра.

В результате делегированный след пера рисуется перед стандартной отрисовкой браузера от имени приложения, в указанном стиле, до следующего события pointermove.

HTML

<canvas id="canvas"></canvas>
<div id="div">Delegated ink trail should match the color of this div.</div>

CSS

div {
  background-color: rgb(0 255 0 / 100%);
  position: fixed;
  top: 1rem;
  left: 1rem;
}

JavaScript

const ctx = canvas.getContext("2d");
const presenter = navigator.ink.requestPresenter({ presentationArea: canvas });
let move_cnt = 0;
let style = { color: "rgb(0 255 0 / 100%)", diameter: 10 };

function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

canvas.addEventListener("pointermove", async (evt) => {
  const pointSize = 10;
  ctx.fillStyle = style.color;
  ctx.fillRect(evt.pageX, evt.pageY, pointSize, pointSize);
  if (move_cnt == 20) {
    const r = getRandomInt(0, 255);
    const g = getRandomInt(0, 255);
    const b = getRandomInt(0, 255);

    style = { color: `rgb(${r} ${g} ${b} / 100%)`, diameter: 10 };
    move_cnt = 0;
    document.getElementById("div").style.backgroundColor =
      `rgb(${r} ${g} ${b} / 60%)`;
  }
  move_cnt += 1;
  await presenter.updateInkTrailStartPoint(evt, style);
});

window.addEventListener("pointerdown", () => {
  ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
});

canvas.width = window.innerWidth;
canvas.height = window.innerHeight;

Результат

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

Спецификация
API чернил
# dom-delegatedinktrailpresenter-updateinktrailstartpoint

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

Рабочие столы Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
updateInkTrailStartPoint 94 93 Нет 80 Нет 94 Нет 66 Нет 17.0 94

См. также

  • Улучшение работы с чернилами в веб-приложениях

© 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/DelegatedInkTrailPresenter/updateInkTrailStartPoint

Spec-Zone.ru

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