mouse_on_arrow.py
mouse_on_arrow.py — text/python-source, 2 KB (2102 bytes)
Dateiinhalt
# -*- coding: utf-8 -*- # visual - Test Mausinteraktion 3 from visual import * scene.range = 8 # starker Tiefeneffekt pfeil = arrow(pos=(2,0,0),axis=(0,5,0)) by = 0.3 # max. Koordinatenabstand Maus-Objekt drag = None # Variable, welche das "Objekt" zum Ziehen speichert while True: if scene.mouse.events: m1 = scene.mouse.getevent() # Speichern der Maus-Ereignisse print "\t %s" %m1 if m1.press: # falls Maustaste gedrückt ... if mag(pfeil.pos-m1.pos) <= by: drag = 'grund' # "Pfeilgrund" angeklickt print "Pfeilgrund-Koordinaten: %s\nMaus-Koordinaten %s\nKoord.-Differenz: %s\n"\ %(pfeil.pos, m1.pos, mag(pfeil.pos-m1.pos)) elif mag((pfeil.pos+pfeil.axis)-m1.pos) <= by: drag = 'spitze' # "Pfeilspitze" angeklickt print "Pfeilspitze-Koordinaten: %s\nMaus-Koordinaten %s\nKoord.-Differenz: %s\n"\ %(pfeil.pos, m1.pos,mag((pfeil.pos+pfeil.axis)-m1.pos)) drag_pos = m1.pos # Mauskoordinate wird zwischengespeichert elif m1.drop: # falls Maustaste losgelassen ... drag = None # kein "Objekt" mehr angeklickt if drag: # falls ein "Objekt" zum Ziehen vorgemerkt ... new_pos = scene.mouse.pos # speichern der aktuellen Mausposition if new_pos != drag_pos: # falls Positionen tatsächlich unterschiedlich ... displace = new_pos - drag_pos # Koordinatendifferenz berechnen drag_pos = new_pos # Position aktualisieren if drag == 'grund': # falls Pfeilgrund zu verschieben .... pfeil.pos += displace # die gesamte Pfeilposition wird verschoben, Ausrichtung bleibt konstant else: pfeil.axis += displace # die Ausrichtung und Länge des Pfeils wird verändert, der Fußpunkt bleibt konstant