Le classi viste nelle precedenti lezioni permettono di realizzare solo animazioni lineari, che modificano il valore di una proprietà, passando da un valore iniziale ad uno finale in un dato periodo di tempo, il tutto in maniera sequenziale.
Questa soluzione, valida nella maggior parte dei contesti, in scenari complessi può avere dei limiti. Silverlight fornisce un modello ad oggetti alternativo che permette di esprimere con maggior dettaglio gli stati degli elementi che partecipano all'animazione, descrivendo i fotogrammi che la compongono. In questo tipo di animazioni indichiamo per ogni istante (frame) il valore esatto da assegnare ad una proprietà.
Dato che il concetto di animazione rimane identico, ovvero quello della modifica di una proprietà in un dato periodo, anche in questo caso troviamo diverse implementazioni di Animation, ognuna specifica per un certo tipo di dato, per esempio se per il modello lineare troviamo la classe DoubleAnimation per quello a fotogrammi abbiamo DoubleAnimationUsingKeyFrames. Ognuna di esse accetta come elementi figlio un elenco di oggetti KeyFrame, per ognuno dei quali indichiamo l'istante (KeyTime) nel quale il frame entra in gioco ed il valore da applicare (Value) alla proprietà.
Vediamo un primo esempio di definizione di una animazioni a fotogrammi.
<Storyboard x:Name="MyStoryboard">
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="MyRectangle"
Storyboard.TargetProperty="Width">
<LinearDoubleKeyFrame KeyTime="0:0:1" Value="200" />
<LinearDoubleKeyFrame KeyTime="0:0:2" Value="180" />
<LinearDoubleKeyFrame KeyTime="0:0:3" Value="300" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
Nel precedente frammento di codice definiamo tre fotogrammi attivati ogni secondo in maniera incrementale per la durata totale di tre secondi. Eseguendo l'animazione non notiamo particolari differenze rispetto all'uso di oggetti base come DoubleAnimation, però guardando nel dettaglio i valori attribuiti alla proprietà Width possiamo notare che, mentre nel primo e terzo frame la dimensione del rettangolo aumenta, nel secondo diminuisce: operazione non direttamente possibile con DoubleAnimation, a patto che non utilizziamo questi oggetti singolarmente come se fossero singoli frame invece di intere animazioni.
Il vantaggio maggiore nell'uso delle animazioni a fotogramma sta nel fatto che per la singola animazione posso utilizzare tipi diversi di interpolazione, nell'esempio precedente abbiamo utilizzato l'elemento LinearDoubleKeyFrame che effettua una transizione lineare del valore della proprietà animata, proprio come DoubleAnimation, ecco perché non notiamo particolari differenze. Nella seguente tabella sono descritti tutti i tipi di KeyFrame, dei quali a sua volta esiste un'apposita versione per ogni tipo di dato supportato, Double, Color e Point.
| Trasformazione | Descrizione |
|---|---|
Linear | Il valore viene interpolato in maniera lineare |
Discrete | Non esistono valori intermedi fra quello iniziale e quello finale. Quando questo KeyFrame viene attivato il valore sarà direttamente impostato |
Spline | Il valore sarà "animato" secondo la curva di Bézier |
LINQ e la trappola della 'deferred execution'Una "trappola" in cui si può incappare utilizzando il risultato di... |
C#, le Custom Type ConversionConversioni personalizzate tra classi, creare metodi particolari per... |
Introduzione a Entity FrameworkIl framework ORM messo a disposizione da .NET |
Repeater: visualizzare un feed RSSUtilizzare il controllo XMLDataSource e sfruttare il metodo XPath()... |
Repeater, il server control "semplice"Cos'è e come funziona il controllo Repeater |
Guida ASP.NET MVC Best PracticesUn workflow dettagliato e ricco di suggerimenti pratici per... |
Guida ASP.NET Starter KitUn modo semplice per imparare ad utilizzare le tecnologie Microsoft... |
Guida Visual Studio 2010L'ambiente di sviluppo di riferimento per sviluppare applicazioni su... |
Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.
Iscriviti alla newsletter
|
|
Corso Progettazione database11 Maggio 2012 a Milano |
|
|
Amministratore di Reti Windows Server 200811 Giugno 2012 a Milano |
|
Nessun corso previsto |