【AE表达式】 获取属性最近的关键帧时间(按关键帧时间跳帧)

单属性版本:

function propKeyTime(ctrl){

var T=time;

if (ctrl.numKeys > 0) {

            var n = ctrl.nearestKey(time).index;

            if ((time < ctrl.key(1).time)) {

                T = time;

            } else {

                if (ctrl.key(n).time > time) {

                    n--;

                };

                T = ctrl.key(n).time;

            }

        } else {

            T = time;

        }

return T

}


双属性版本:

function twoPropsKeyTime(ctrl1, ctrl2) {

        var T = time;

        if (ctrl1.numKeys > 0) {

           var n = ctrl1.nearestKey(time).index;

           var m = 0;

            if (ctrl2.numKeys > 0) {

                m = ctrl2.nearestKey(time).index;

            }


            if (n + m == 0) {

                T = time;

            } else {

                if (ctrl1.key(n).time > time) {

                    n--;

                };

                if ((ctrl2.numKeys > 0) && (ctrl2.key(m).time > time)) {

                    m--;

                };


                if ((ctrl2.numKeys > 0) && (m > 0) && (n > 0)) {

                    T = ctrl2.key(m).time > ctrl1.key(n).time ? ctrl2.key(m).time : ctrl1.key(n).time;

                } else if (n > 0) {

                    T = ctrl1.key(n).time;

                } else {

                    T = time;

                }

            }

        } else {

            T = time;

        }

        return T;

}


marker版本:

function markerTime() {

    if (marker.numKeys > 0) {

        m = marker.nearestKey(time);

        if (m.index == 1 && time <= m.time) {

            return time;

        } else {

            if (m.time > time) {

                m = marker.key(m.index - 1);

            }

            mT = m.time;

            mD = m.duration;

            mTandD = mT + mD;

            if (time > mT && time < mTandD) {

                T = mT;

                return T;

            } else {

                return time;

            }

        }

    } else {

        return time;

    }

}

评论

© leizingjiu | Powered by LOFTER