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