Ich habe versucht, Touchtracer Demo-Beispiel in meinen Code zu implementieren. Here is the original pageKivy Grabbing Touch ohne Verzögerung
Ich erkannte, dass die Verfolgung nur mit einer Verzögerung funktioniert aufgrund der notwendigen touch.grab (Selbst-) Ereignis (nachdem Sie die Taste gedrückt halten). Ich möchte jedoch die Spur ohne Verzögerung sehen, direkt nach dem ersten Zug. Gibt es einen Weg dies zu tun, ohne die Spurenbildung zu stören?
EDIT: Mit "Verzögerung" meine ich die Halteaktion, um die Verfolgung zu aktivieren. Derzeit ist ein Drücken + Halten erforderlich, um den Tracer zu starten. Ich möchte in der Lage sein, unterwegs zu verfolgen, ohne den "Halt".
EDIT2: Ich hatte das Bedürfnis zu erklären, wie sich meine Version des Touchtracers von der anderer unterscheidet, weil niemand außer mir mit diesem Problem konfrontiert ist. Ich habe den Touchtracer-Code in meinen eingebettet und die vertikalen/horizontalen Linien und das Etikett entfernt. Meine Version hat also nur die Spur. Hier ist, was mein on_touch_down, on_touch_move und on_touch_up aussieht.
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'])
Dieses Beispiel wurde gerade heruntergeladen und es kann keine Verzögerung zwischen dem Zeichnen von Spuren und dem Drücken einer Maustaste auftreten. Verwendet kivy 1.9.2 dev mit Python 2.7 – jligeza
Ich bin ziemlich sicher, dass dieses Beispiel keine nennenswerte Verzögerung einführen sollte. Tritt dasselbe in anderen Kivy-Apps auf und verschwindet es, wenn Sie den 'touch.grab'-Aufruf entfernen? – inclement
Die Verzögerung, über die ich sprach, war die "Drücken und Halten" -Aktivierung des Tracers. Es funktioniert nicht, wenn ich den Zeiger mit der Linksklick-Aktion bewege. Ich benutze Python 2.7 und kivy 1.9.1 und ohne die Spur zu greifen funktioniert nicht. – potato