Precedente Indice Successiva

Animazioni

Immagine slide
  • Come avrete notato, la funzione di disegno viene chiamata frequentemente, quindi non c'è un modo per forzare un ridisegno e non occorre usare timer.
  • Occorre invece prevedere delle variabili globali di stato ed aggiornarle nella funzione di ridisegno. Con qualche esperimento si potrà trovare l'incremento opportuno in base alla frequenza del ridisego.
  • Potremmo ad esempio facilmente creare una pallina che rimbalzi sui bordi del pannello, partendo con un'angolazione casuale.
  • Utilizzeremo quattro variabili di stato x, y, vx e vy.
  • La nostra pallina sarà un cerchio.
  • Un esempio sarà il seguente:
    import simplegui
    import random
    larghezza = 300
    altezza = 200
    raggio = 15
    x = larghezza / 2
    y = altezza / 2
    vx = random.randrange(1,5)
    vy = random.randrange(1,5)
    def disegno (pannello):
    global x, y, vx, vy
    pannello.draw_circle((x,y), raggio, 2, "Yellow", "#ffffc0")
    x += vx
    y += vy
    if x < raggio or x > larghezza - raggio:
    vx = -vx
    if y < raggio or y > altezza - raggio:
    vy = -vy
    finestra = simplegui.create_frame("Prova", larghezza, altezza, 5)
    finestra.set_canvas_background('#000080')
    finestra.set_draw_handler(disegno)
    finestra.start()
  • Se vogliamo avere un controllo migliore sulla velocità, ed avere velocità inferiori, possiamo includere il modulo time ed utilizzare la funzione time.time() che ritorna un tempo in secondi, ma con i decimali,
© Ing. Stefano Salvi - released under FDL licence

Valid XHTML 1.0! Valid CSS!