按住指针后轻微抖动通常不必立即当成拖动,但一旦越过阈值开始拖动,回到起点也不应该自动变回普通点击。这里的状态取决于本次按住期间的历史,而不只看最后的位置。
以下是一组输入完整的独立案例。先读清规则,再按时间或操作顺序记录中间状态;遇到与预期不同的结果时,检查首次出现差异的位置。案例使用明确限定的教学模型,不假定所有作品都采用相同的处理方式。
按下点固定,距离平方达到阈值平方时启动拖动,等号包含在内。状态在本次按住期间保持,抬起时根据是否曾触发输出点击或拖动结束;忽略设备采样之间的未观测路径。
按下点[-7, -4],阈值3,最后一个采样后抬起 [[-7, -4], [-5, -4], [-4, -4], [-7, -4], [-2, 1], [-5, -4], [-8, -7], [-8, -7], [-4, -8], [-5, -4], [-11, -7], [-7, -4]]
采样1在(-7,-4),相对按下点偏移(0,0)、距离平方0,阈值平方9;状态仍为点击候选。
采样2在(-5,-4),相对按下点偏移(2,0)、距离平方4,阈值平方9;状态仍为点击候选。
采样3在(-4,-4),相对按下点偏移(3,0)、距离平方9,阈值平方9;状态本次开始拖动。
采样4在(-7,-4),相对按下点偏移(0,0)、距离平方0,阈值平方9;状态保持拖动。
采样5在(-2,1),相对按下点偏移(5,5)、距离平方50,阈值平方9;状态保持拖动。
采样6在(-5,-4),相对按下点偏移(2,0)、距离平方4,阈值平方9;状态保持拖动。
采样7在(-8,-7),相对按下点偏移(-1,-3)、距离平方10,阈值平方9;状态保持拖动。
采样8在(-8,-7),相对按下点偏移(-1,-3)、距离平方10,阈值平方9;状态保持拖动。
采样9在(-4,-8),相对按下点偏移(3,-4)、距离平方25,阈值平方9;状态保持拖动。
采样10在(-5,-4),相对按下点偏移(2,0)、距离平方4,阈值平方9;状态保持拖动。
采样11在(-11,-7),相对按下点偏移(-4,-3)、距离平方25,阈值平方9;状态保持拖动。
采样12在(-7,-4),相对按下点偏移(0,0)、距离平方0,阈值平方9;状态保持拖动。
抬起时输出“拖动结束”;末点就是按下点,但决定因素是整个按住期间的状态。
记录截至每个采样的最大距离平方,与阈值比较来独立恢复状态。尤其检查超过阈值后返回原点的样本,最终位移为零并不表示从未拖动。
采样点之间实际走过的轨迹在本例中不可见,因此快速移出又移回而没有留下中间采样的运动,不能仅凭这些数据推断。这个限制属于观测条件,不应通过猜测路径来补出拖动事件。
建议保留原始输入、每一步状态和最终输出,再只改变一个条件做对照。重点检查空输入、相等边界、重复请求以及先后顺序;把规则约定、计算过程和显示表现分别核对,比只比较最后一个数字更容易找到原因。