TrackClip = function (opts) {

    opts = opts || {};

    Clip.call(this, opts);

    /**
     *
     * @type {clay.animation.SamplerTrack[]}
     */
    this.tracks = opts.tracks || [];

    this.calcLifeFromTracks();
}
Animation clip that manage a collection of {@link clay.animation.SamplerTrack}
@constructor
@alias clay.animation.TrackClip

@extends clay.animation.Clip
@param {Object} [opts]
@param {string} [opts.name]
@param {Object} [opts.target]
@param {number} [opts.life]
@param {number} [opts.delay]
@param {number} [opts.gap]
@param {number} [opts.playbackRatio]
@param {boolean|number} [opts.loop] If loop is a number, it indicate the loop count of animation
@param {string|Function} [opts.easing]
@param {Function} [opts.onframe]
@param {Function} [opts.onfinish]
@param {Function} [opts.onrestart]
@param {Array.<clay.animation.SamplerTrack>} [opts.tracks]