function Animator(target, loop, getter, setter, interpolater) {
    this._tracks = {};
    this._target = target;

    this._loop = loop || false;

    this._getter = getter || defaultGetter;
    this._setter = setter || defaultSetter;

    this._interpolater = interpolater || null;

    this._delay = 0;

    this._doneList = [];

    this._onframeList = [];

    this._clipList = [];

    this._maxTime = 0;

    this._lastKFTime = 0;
}
@description Animator object can only be created by Animation.prototype.animate method.
After created, we can use {@link clay.animation.Animator#when} to add all keyframes and {@link clay.animation.Animator#start} it.
Clips will be automatically created and added to the animation instance which created this deferred object.

@constructor clay.animation.Animator

@param {Object} target
@param {boolean} loop
@param {Function} getter
@param {Function} setter
@param {Function} interpolater