Fix touch position offset in image masking on iOS devices (#16702)
* Initial plan * Fix iOS touch position offset in image masking feature Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
This commit is contained in:
parent
81cea6aed5
commit
456504cf82
|
|
@ -257,8 +257,12 @@ function onImagePointerdown(ev: PointerEvent) {
|
|||
xOffset /= 2;
|
||||
yOffset /= 2;
|
||||
|
||||
let startX = ev.offsetX - xOffset;
|
||||
let startY = ev.offsetY - yOffset;
|
||||
const rect = canvasEl.value.getBoundingClientRect();
|
||||
const pointerOffsetX = ev.clientX - rect.left;
|
||||
const pointerOffsetY = ev.clientY - rect.top;
|
||||
|
||||
let startX = pointerOffsetX - xOffset;
|
||||
let startY = pointerOffsetY - yOffset;
|
||||
|
||||
if (AW / AH < BW / BH) { // 横長
|
||||
startX = startX / (Math.max(AW, AH) / Math.max(BH / BW, 1));
|
||||
|
|
@ -311,9 +315,11 @@ function onImagePointerdown(ev: PointerEvent) {
|
|||
});
|
||||
}
|
||||
|
||||
_move(ev.offsetX, ev.offsetY);
|
||||
_move(ev.clientX, ev.clientY);
|
||||
|
||||
function _move(pointerX: number, pointerY: number) {
|
||||
function _move(pointerClientX: number, pointerClientY: number) {
|
||||
const pointerX = pointerClientX - rect.left;
|
||||
const pointerY = pointerClientY - rect.top;
|
||||
let x = pointerX - xOffset;
|
||||
let y = pointerY - yOffset;
|
||||
|
||||
|
|
@ -340,7 +346,7 @@ function onImagePointerdown(ev: PointerEvent) {
|
|||
}
|
||||
|
||||
function move(ev: PointerEvent) {
|
||||
_move(ev.offsetX, ev.offsetY);
|
||||
_move(ev.clientX, ev.clientY);
|
||||
}
|
||||
|
||||
function up() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue