Blend1DClip = function (opts) {

    opts = opts || {};

    Clip.call(this, opts);
    /**
     * Output clip must have blend1D and copy method
     * @type {clay.animation.Clip}
     */
    this.output = opts.output || null;
    /**
     * @type {clay.animation.Blend1DClip.IClipInput[]}
     */
    this.inputs = opts.inputs || [];
    /**
     * @type {number}
     */
    this.position = 0;

    this._cacheKey = 0;
    this._cachePosition = -Infinity;

    this.inputs.sort(clipSortFunc);
}
1d blending node in animation blend tree.
output clip must have blend1D and copy method
@constructor
@alias clay.animation.Blend1DClip
@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 {object[]} [opts.inputs]
@param {number} [opts.position]
@param {clay.animation.Clip} [opts.output]