Filed in: Resources.ProgrammingPanda3dTutorialDasEventsystem · Modified on : Fri, 31 Jul 09
====== Das Eventsystem ======
weiterführende erkärung der Interaktiven Manipulation?
<code type="Python"> import direct.directbase.DirectStart from direct.showbase.DirectObject import DirectObject import sys
class KeyPollerClass( DirectObject ):
def __init__( self ):
self.data = dict()
for key in POLLKEYS:
self.accept( key, self.event, [key, True] )
self.accept( key+"-up", self.event, [key, False] )
self.data[ key ] = False
def event( self, key, active ):
self.data[key] = active
def __getitem__( self, key ):
return self.data[key]
keyPoller = KeyPollerClass() </code>
Diese Klasse speichert die aktuell gedrückten Tasten.
<code type="Python">
class KeyPollerClass( DirectObject ):
</code>
Definiert eine neue Klasse mit dem Namen „keyPollerClass“. Sie wird von DirectObject abgeleitet, dadurch können innerhalb dieser Klasse Events abgefangen werden.
<code type="Python">
self.data = dict()
</code>
Definiert einen Dictionary in welchem wir festhalten welche Tasten gedrückt sind.
<code type="Python">
for key in POLLKEYS:
</code>
Für jedes Element in der Liste POLLKEYS, wird der folgende block ausgeführt.
<code type="Python">
self.accept( key, self.event, [key, True] )
</code>
Definiert bei welchem Event (key), welcheFunktion aufgerufen wird (self.event), optional können noch Parameter angegeben werden, welche dieser Funktion übergeben werden.
<code type="Python">
self.accept( key+"-up", self.event, [key, False] )
</code>
Beim loslassen der Taste wird wiederum ein Event ausgelöst. (zBsp. Event „a-up“)
<code type="Python">
def event( self, key, active ):
self.data[key] = active
</code> Diese Funktion wird beim auslösen des Events aufgerufen und speichert den aktuellen Zustand der Taste.