Esempio n. 1
0
        /// <summary>
        /// Aggancia un'animazione a questo Animator. Eseguire il detach il prima possibile.
        /// </summary>
        /// <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="from"></param>
        /// <param name="to"></param>
        /// <param name="invalidate"></param>
        /// <returns></returns>
        public Animation Attach(int interval, int duration, NinePatch from, NinePatch to, Action invalidate)
        {
            if (interval < min_interval)
                interval = min_interval;

            if (duration < interval)
                duration = interval;

            var anim = new Animation(
                (int)Math.Round((float)interval / (float)min_interval, 0, MidpointRounding.ToEven) - 1,
                duration / interval,
                from,
                to,
                invalidate);

            animations.Add(anim);
            if(!tmr.Enabled) tmr.Start();
            return anim;
        }
Esempio n. 2
0
        /// <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();
        }
Esempio n. 3
0
 public void Detach(Animation anim)
 {
     detachQueue.Add(anim);
 }
Esempio n. 4
0
        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();
        }