public void ApplyValue(RadObject element)
 {
     this.RemovePreviousAnimation(element);
     if (!this.IsAnimationEnabled(element))
     {
         this.OnAnimationStarted(new AnimationStatusEventArgs(element, false));
         this.OnAnimationFinished(new AnimationStatusEventArgs(element, true, !this.RemoveAfterApply));
     }
     else
     {
         ElementValuesAnimator animator = this.GetAnimator(element);
         animator.Initialize(element, this.startValue != null ? this.startValue : element.GetValue(this.Property));
         if (this.RandomDelay != 0)
         {
             this.ApplyDelay = AnimatedPropertySetting.rand.Next(this.RandomDelay);
         }
         if (this.ApplyDelay > 0)
         {
             animator.Waiting = true;
             Timer timer = new Timer();
             timer.Interval = this.ApplyDelay;
             timer.Tick    += new EventHandler(this.delayTimer_Tick);
             timer.Tag      = (object)element;
             timer.Start();
         }
         else
         {
             this.OnAnimationStarted(new AnimationStatusEventArgs(element, false));
             animator.Start(element);
         }
     }
 }
        public void AppendValue(
            RadObject element,
            RadProperty property,
            object startValue,
            object endValue,
            int frames,
            int interval)
        {
            if (this.Property != property)
            {
                return;
            }
            this.StartValue = startValue;
            this.EndValue   = endValue;
            this.NumFrames  = frames;
            this.Interval   = interval;
            ElementValuesAnimator animator = this.GetAnimator(element);

            animator.Stop();
            animator.Initialize(element, this.StartValue);
            animator.Start(element);
        }