Links und Funktionen
Sprachumschaltung

Navigationspfad
Sie sind hier: Startseite / Probestudium / 2013 / WS I: 3D-Programmierung / Tutorials / Mouse-Events / mouse_on_arrow.py


Inhaltsbereich

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 

Funktionsleiste