Я пытался реализовать демонстрационный пример touchtracer в своем коде. Here is the original pageKivy Grabbing Touch без задержки
я понял, что трассировка работает только с задержкой (после того, как вы нажмете и будете удерживать кнопку) из-за необходимости touch.grab (само) событие. Тем не менее, я хочу видеть след без задержки, сразу после первого хода. Есть ли способ сделать это, не нарушая работу трассировки?
EDIT: Под «задержкой» подразумевается удерживающее действие для активации трассировки. В настоящее время для запуска индикатора требуется нажатие + удержание. Я хочу быть в состоянии отслеживать на ходу, без «удержания».
EDIT2: Я чувствовал потребность объяснить, как моя версия touchtracer отличается от всех остальных, потому что никто не сталкивается с этой проблемой, кроме меня. Я вложил код touchtracer в шахту и удалил вертикальные/горизонтальные линии и этикетку. Таким образом, моя версия имеет только след. Вот как выглядит мои 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'])
Просто загрузите этот пример и не можете получить какую-либо задержку между трассировками и нажатием кнопки мыши. Используется kivy 1.9.2 dev с python 2.7 – jligeza
Я довольно уверен, что этот пример не должен вносить заметной задержки. То же самое происходит в других приложениях Kivy, и удаляется ли это, если вы удаляете вызов touch touch? – inclement
Задержка, о которой я говорил, была активация трассировки нажатием и удержанием. Это не работает, если я перемещаю указатель с помощью действия левой кнопкой мыши. Я использую python 2.7 и kivy 1.9.1 и без захвата трассировки не работает. – potato