我试图在代码中实现touchtracer演示示例。这是原版
我意识到,由于必要的touch.grab(self)事件,跟踪只对延迟(按下按钮并按住按钮后)起作用。但是,我想看到的跟踪没有延迟,在第一次移动后立即。有没有办法在不干扰追踪的情况下做到这一点?
编辑:所谓的“延迟”,我指的是保持行动,以激活跟踪。目前,需要按+按住才能启动跟踪器。我想要能够追踪,没有‘搁置’。
EDIT2:我觉得有必要解释一下我的触屏追踪器和其他人的版本有什么不同,因为除了我之外,似乎没有人会面临这个问题。我嵌入了触摸屏代码在我的,并删除垂直/水平线和标签。所以我的版本只有痕迹。这是我的on_touch_down,on_touch_move和on_touch_up的样子。
def on_touch_down(self, touch):
win = self.get_parent_window()
ud = touch.ud
ud['group'] = g = str(touch.uid)
pointsize = 5
ud['color'] = random()
with self.canvas:
Color(ud['color'], 1, 1, mode='hsv', group=g)
ud['lines'] = [
Point(points=(touch.x, touch.y), source='particle.png',
pointsize=pointsize, group=g)]
touch.grab(self)
return True
def on_touch_move(self, touch):
if touch.grab_current is not self:
return
ud = touch.ud
index = -1
while True:
try:
points = ud['lines'][index].points
oldx, oldy = points[-2], points[-1]
break
except:
index -= 1
if (oldx, oldy) == (touch.x, touch.y):
return
points = calculate_points(oldx, oldy, touch.x, touch.y)
if points:
try:
lp = ud['lines'][-1].add_point
for idx in range(0, len(points), 2):
lp(points[idx], points[idx + 1])
except GraphicException:
pass
def on_touch_up(self, touch):
if touch.grab_current is not self:
return
touch.ungrab(self)
ud = touch.ud
self.canvas.remove_group(ud['group'])发布于 2016-06-29 19:44:11
好吧,它看起来像一个库的版本问题。我在python2.7中使用了它,它构建在Ubuntu14.0上,运行在virtualbox上。我用库更新了与python和重新安装kivy相关的所有内容,并解决了问题。我仍然不确定是什么原因造成的,因为我没有在日志中收到任何错误消息,但看起来这是由于一个错误或没有正确安装的kivy。
发布于 2016-06-24 21:02:07
发布于 2020-10-08 03:05:38
我遇到了这个问题,结果是"ScrollView“及其所有子级都有一个内置的延迟来检查它是快速触摸还是拖动,您可以通过手动将延迟设置为零来修复这个问题:
yourScrollView.scroll_timeout = 0https://stackoverflow.com/questions/37933920
复制相似问题