L'idea di base è di avere alcuni widget animati che si trovano in un contenitore, abbastanza simile a Qt (l'unica vera differenza è che i miei widget sono animati).
In alcuni casi l'animazione dipende dal "tempo" corrente (ad esempio il numero di fotogramma) e presenta alcuni "eventi". Per spiegarlo meglio, prendiamo ad esempio una linea. Per creare un effetto interessante, potrei volere che nei primi 100 fotogrammi la linea "cresca" da sinistra a destra, e poi rimanga ferma. Quindi l'animazione della linea è fondamentalmente divisa in un'introduzione e il ciclo principale.
Il problema è come costruire l'architettura di questa animazione / gestione degli eventi? Il mio attuale approccio è di avere una classe animata che tenga traccia del tempo (ha un contatore incrementato ogni volta che il widget viene ridisegnato, in pratica su ciascun fotogramma). Inoltre, ha alcuni metodi che impostano gli eventi dell'animazione (vale a dire per 100 frame, intro, quindi il loop principale) e alcuni che incrementano il frame counter e recuperano l'evento corrente. Gli eventi sono memorizzati in un array e hanno un nome / id e una durata (quindi ottenere l'evento corrente è abbastanza semplice, in base al numero di fotogramma corrente). Quindi, ho dei widget che ereditano Animated e, quando sono disegnati, controllano l'evento corrente e intraprendono azioni specifiche.
Non mi interessa il fatto che l'animazione sia definita in questo modo dall'oggetto stesso, ma non mi piace la classe Animated, poiché fondamentalmente ogni oggetto ha un "clock" diverso. Inoltre, mi piacerebbe essere in grado di controllare l'animazione di ogni widget (cioè essere in grado di accorciare / allungare la durata degli eventi). Nell'attuale approccio, posso farlo, ma devo impostare gli eventi dall'esterno (il problema principale è che ho bisogno di conoscere il nome degli eventi e il loro significato).
C'è un modo migliore per farlo?