Links und Funktionen
Sprachumschaltung

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


Inhaltsbereich

mouse_drag.py

Maus bewegt Kugel immer nur in einer fixen Ebene (wichtig für Spielideen ähnlich Schach, Schiffe versenken, ...)

mouse_drag.py — text/python-source, 1 KB (1516 bytes)

Dateiinhalt

# -*- coding: utf-8 -*-
# visual - mouse drag

from visual import *

scene.range = 5 
ball = sphere(pos=(-3,0,0), color=color.cyan)           # blaue Kugel
cube = box(pos=(+3,0,0), size=(2,2,2), color=color.red) # roter Würfel
pick = None                                             # Variable zeigt Mauskontakt
while True:
    rate(100)
    if scene.mouse.events:                              # falls Maustaste gedrückt...
        m1 = scene.mouse.getevent()                     # event in m1 speichern
        if m1.drag and m1.pick == ball:                 # falls Mauskontakt mit Objekt
            drag_pos = m1.pickpos                       # speichern der Kontaktkoordinaten in drag_pos
            pick = m1.pick                              # pick gesetzt
        elif m1.drop:                                   # falls Maustaste losgelassen...
            ball.opacity=1                              # Transparenz deaktiviert
            pick = None                                 # Mauskontakt vorüber
    if pick:                                            # falls Mauskontakt...
        new_pos = scene.mouse.project(normal=(0,0,1))   # Neuposition immer in xy-Ebene..
        ball.opacity=0.2                                # Kugel transparent
        if new_pos != drag_pos:                         # falls Neuposition ungleich Mauspos...
            pick.pos += new_pos - drag_pos              # aktualisiert pickpos
            drag_pos = new_pos                          # aktualisiert dragpos

Funktionsleiste