Animationen

Jede grafische Benutzeroberfläche muss sich von Zeit zu Zeit neu darstellen. Schlussendlich sind Knöpfe und Menus auch nur Pixel-Bilder welche uns der Bildschirm darstellt. Durch schnelles Aneinanderreihen können auch Animationen entstehen, z.B. das Bewegen des Mauszeigers.

Möchten wir selbst eine Animation machen, so können wir eine eigene Funktion mit registerEvent() im Loop von appJar registrieren. Diese wird dann, immer wenn die Oberfläche neue gezeichnet wird, auch aufgerufen. Das Intervall in welchem neu gezeichnet wird, lässt sich mit setPollTime(t) in ms setzen.

Beispiel

"""
Zeichnet einen Kreis gegeben durch Mittelpunkt und Radius und bewegt ihn
Sebastian Forster (fts)
12.11.2018
"""
from appJar import gui

def kreis(x, y, r):
    # Kreis zeichnen und als Rückgabewert zurückliefern
    kreis = canvas.create_oval(x-r, y-r, x+r, y+r, width=3)
    return kreis

def bewegeKreis():
    # Kreis c im Canvas verschieben
    canvas.move(c, -1, 0.2)

# Vorbereiten
app=gui()
app.setSize(800,600)
canvas = app.addCanvas("c1")

# kreisfunktion aufrufen und Kreisobjekt in Variable c speichern
c = kreis(600,300,126)

# Funktion für Animation registrieren
app.registerEvent(bewegeKreis)

# Intervall auf 10 ms setzen
app.setPollTime(10)

# Anzeigen und Animation starten
app.go()

Aufgabe

Schaffst du es die Sonne zu animieren, so dass sie sich langsam vorbeibewegt? Unter «Nachschlagen» findest du weitere Infos zum nachträglichen Ändern von Canvas-Objekten.