/// <summary>
 /// Instances of the Tweener class are responsible for animating given properties for a given object.
 /// </summary>
 /// <param name="animated_object">The object to animate</param>
 /// <param name="transistions">A list of propertynames and their destination values.</param>
 /// <param name="easingFunction">The easing funtion to use for the animation.<see cref="ease"/></param>
 /// <param name="duration">The duration (in timer ticks) the animation should take to complete.</param>
 /// <param name="delay">How long to wait (in timer ticks) before starting the animation.</param>
 public Tweener(object animated_object, TweenPairs transistions, ease easingFunction, int duration, int delay)
 {
     this.duration       = duration;
     this.easingFunction = new ease(easingFunction);
     this.delay          = delay;
     this.transitions    = transistions;
     if (animated_object is Control && (transistions[0].Key == "X" || transistions[0].Key == "Y"))
     {
         animated_object = new LocationProxy((Control)animated_object);
     }
     this.animated_object = animated_object;
 }
 public Tweener(object animated_object, TweenPairs transitions, ease easingFunction, int duration, int delay, Tweener chainedTweener)
     : this(animated_object, transitions, easingFunction, duration, delay)
 {
     this.chainedTweener = chainedTweener;
 }