From 14681f4ba7fe41074010dc3c19c6d69308b5c64b Mon Sep 17 00:00:00 2001 From: Dave Pagurek Date: Tue, 15 Apr 2025 18:46:27 -0400 Subject: [PATCH 1/2] Add p5.Element touch events --- src/data.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/data.js b/src/data.js index 359aa4d..c5222d8 100644 --- a/src/data.js +++ b/src/data.js @@ -8,6 +8,46 @@ function addData(p5, fn){ fn.touchMoved = function (...args) { return this.mouseDragged(...args); }; + p5.Element.prototype.touchStarted = function (cb) { + if (cb === false) { + return this.mousePressed(false); + } + return this.mousePressed(function (event) { + if (this._hasTouchMoveHandler) { + this._pointers = this._pointers || {}; + this._pointers[event.pointerId] = true; + } + event.target.setPointerCapture(event.pointerId); + return cb(event); + }); + }; + p5.Element.prototype.touchEnded = function (cb) { + if (cb === false) { + return this.mouseReleased(false); + } + return this.mouseReleased(function (event) { + if (this._hasTouchMoveHandler) { + this._pointers = this._pointers || {}; + if (this._pointers[event.pointerId]) { + event.target.releasePointerCapture(event.pointerId); + delete this._pointers[event.pointerId]; + } + } + return cb(event); + }); + }; + p5.Element.prototype.touchMoved = function (cb) { + if (cb === false) { + this._hasTouchMoveHandler = false; + return this.mouseMoved(false); + } + this._hasTouchMoveHandler = true; + return this.mouseMoved(function (event) { + if (Object.keys(this._pointers || {}).length > 0) { + return cb(event); + } + }); + }; fn.append = function (array, value) { array.push(value); From 237e600a2eaa6c2d50fb41764e6762f64e44f263 Mon Sep 17 00:00:00 2001 From: Dave Pagurek Date: Tue, 15 Apr 2025 18:51:51 -0400 Subject: [PATCH 2/2] Simplify implementation --- src/data.js | 30 +++--------------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/src/data.js b/src/data.js index c5222d8..77bbe60 100644 --- a/src/data.js +++ b/src/data.js @@ -9,41 +9,17 @@ function addData(p5, fn){ return this.mouseDragged(...args); }; p5.Element.prototype.touchStarted = function (cb) { - if (cb === false) { - return this.mousePressed(false); - } - return this.mousePressed(function (event) { - if (this._hasTouchMoveHandler) { - this._pointers = this._pointers || {}; - this._pointers[event.pointerId] = true; - } - event.target.setPointerCapture(event.pointerId); - return cb(event); - }); + return this.mousePressed(cb); }; p5.Element.prototype.touchEnded = function (cb) { - if (cb === false) { - return this.mouseReleased(false); - } - return this.mouseReleased(function (event) { - if (this._hasTouchMoveHandler) { - this._pointers = this._pointers || {}; - if (this._pointers[event.pointerId]) { - event.target.releasePointerCapture(event.pointerId); - delete this._pointers[event.pointerId]; - } - } - return cb(event); - }); + return this.mouseReleased(cb); }; p5.Element.prototype.touchMoved = function (cb) { if (cb === false) { - this._hasTouchMoveHandler = false; return this.mouseMoved(false); } - this._hasTouchMoveHandler = true; return this.mouseMoved(function (event) { - if (Object.keys(this._pointers || {}).length > 0) { + if ((event.buttons & 1) !== 0) { return cb(event); } });