- From: Joe Pea via GitHub <sysbot+gh@w3.org>
- Date: Sun, 10 Jan 2021 01:37:40 +0000
- To: public-pointer-events@w3.org
Ah, interesting. I didn't look to see which spec the properties came, but I certainly would expect them to behave a certain way with pointer events. Namely in my case, I definitely expect movementX to have a value other than zero.
In order to work around the issue that I see (in Chrome at the moment), I need to ignore the `movementX` property, and instead I track deltas my self using only `clientX` and it gets a bit complicated.
Instead of this:
```js
let isDragging = false;
this.scene.addEventListener("pointerdown", (event) => {
isDragging = true;
});
this.scene.addEventListener("pointermove", (event) => {
if (!isDragging) return;
const delta = event.movementX;
// use delta
});
this.scene.addEventListener("pointerup", (event) => {
if (!isDragging) return;
isDragging = false;
const delta = event.movementX;
if (delta !== 0) {
// use delta, etc, to fling the object
}
});
```
We have to do this:
```js
// Keeps the last two pointermove clientX values
let xStack = [0, 0];
function addX(x) {
xStack.shift();
xStack.push(x);
}
let isDragging = false;
this.scene.addEventListener("pointerdown", (event) => {
isDragging = true;
addX(event.clientX);
});
this.scene.addEventListener("pointermove", (event) => {
if (!isDragging) return;
const lastX = xStack[1];
const delta = event.clientX - lastX;
addX(event.clientX);
// ... use delta ...
});
this.scene.addEventListener("pointerup", (event) => {
if (!isDragging) return;
isDragging = false;
// We want the second-to-last pointermove's clientX value here, because
// the current pointerup has the same clientX as the last pointermove event.
const secondToLastX = xStack[0];
let delta = event.clientX - secondToLastX;
if (delta !== 0) {
// ... use delta ...
}
});
```
--
GitHub Notification of comment by trusktr
Please view or discuss this issue at https://github.com/w3c/pointerevents/issues/344#issuecomment-757397251 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Sunday, 10 January 2021 01:37:42 UTC