gpt4 book ai didi

javascript - 对于不同的触摸点,touch.identifier值始终为0

转载 作者:行者123 更新时间:2023-11-28 09:09:26 24 4
gpt4 key购买 nike

我正在测试来自 Mozilla https://developer.mozilla.org/en-US/docs/Web/Guide/Touch_events 的 Canvas 中的多点触控示例。

这是我面临的问题:触摸界面的标识符属性在笔记本电脑上的每个触摸点上始终显示整数值 0(我使用的是 Google Chrome 版本 26.0.1410.64 m),这是一款触摸超极本。

根据规范,每次触摸的标识符应该是唯一的,但对于 Canvas 上的每个新触摸点,标识符显示为 0。

请帮助我了解导致此问题的原因,因为我想使用标识符唯一值将其映射到不同的颜色,并在触摸 Canvas 上进行绘制,例如应用程序。

最佳答案

为了回应您的评论,我认为您特别指的是这段代码:

 function ongoingTouchIndexById(idToFind) {
for (var i=0; i<ongoingTouches.length; i++) {
var id = ongoingTouches[i].identifier;
if (id == idToFind) {
return i;
}
}
return -1; // not found
}

如您所见,此函数要么返回给定id的索引(如果特定的Touch尚未结束,自上次调用处理程序以来),或返回 -1。
您链接到的代码页非常简单,IMO:每次注册新的 touchstart 事件时,都会检查正在进行的(或过去的)触摸事件的 id,并从全局(邪恶)数组中删除相应的 id。这样做的原因有很多,但我将把这些留给您去查找(或者在您尝试熟悉代码后询问后续问题)。

对于每个不同的changedtouch,标识符都是唯一的。现在,您没有提供您正在使用的代码,但我的猜测是您没有从正确的位置获得唯一标识符:

var ids = [];
for (var i=0;i<e.changedTouches.length;i++)
{
ids.push(e.changedTouches[0].identifier);
}
console.log(ids);

如果您触摸的数字超过 1 位,ids 应为每次触摸包含一个不同的 ID。
我可能在这里完全找错了树,但再次强调:将您的代码添加到问题中,以便我们可以确定。但您可能会一遍又一遍地重新分配 ID,只留下 changedTouches 数组中最后一个 Touch 的值。
您还可能尝试直接从 event 对象获取标识符。或者你也可以做别的事情,但都一样。

检查您的控制台,记录事件对象并检查该事件的 changedTouches 属性。

关于javascript - 对于不同的触摸点,touch.identifier值始终为0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16511504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com