public void ContinueAnimationB(ref Animation animationPlaceholder, NinePatch from, NinePatch to, int interval, int duration, Action invalidate) { float p; if (animationPlaceholder == null) { p = 1; } else { p = animationPlaceholder.Stop(); } animationPlaceholder = this.Attach(interval, (int)(duration * p), from, to, invalidate); animationPlaceholder.SetDetachOnFinish(true, this); animationPlaceholder.Start(); }
/// <summary> /// Esegue un'animazione salvando l'oggetto Animation in animationPlaceholder. /// Una chiamata successiva di questo metodo sullo stesso animationPlaceholder /// eseguirà la nuova animazione a partire dall'istante in cui era arrivata quella vecchia. /// </summary> /// <param name="animationPlaceholder">Oggetto Animation per tenere traccia dell'animazione corrente. Alla prima chiamata del metodo può essere null.</param> /// <param name="to">NinePatch verso cui eseguire l'animazione.</param> /// <param name="defaultFrom">NinePatch da cui far partire l'animazione nel caso in cui animationPlaceholder sia null.</param> /// <param name="interval">Numero di millisecondi ogni quanto eseguire un frame (valori più bassi indicano una frequenza maggiore).</param> /// <param name="duration">Durata dell'animazione (millisecondi).</param> /// <param name="invalidate">Metodo per richiedere l'invalidazione grafica.</param> public void ContinueAnimation(ref Animation animationPlaceholder, NinePatch to, NinePatch defaultFrom, int interval, int duration, Action invalidate) { float p; NinePatch startFrame; if (animationPlaceholder == null) { p = 1; startFrame = defaultFrom; } else { p = animationPlaceholder.Stop(); startFrame = animationPlaceholder.GetCurrentFrame(); } animationPlaceholder = this.Attach(interval, (int)(duration * p), startFrame, to, invalidate); animationPlaceholder.SetDetachOnFinish(true, this); animationPlaceholder.Start(); }