TimelineMax.exportRoot()

优质
小牛编辑
126浏览
2023-12-01

TimelineMax.exportRoot( vars:Object, omitDelayedCalls:Boolean ) : TimelineLite
将全部动画、时间轴、函数(可选)从根时间轴导出至新的时间轴便于执行一些高级操作,并且不影响导出后创建的动画/时间轴。
例如你使用tweenmax制作了一个游戏,你想让其在某个时刻逐渐减速至零(将timeScale减至0),然后创建一个弹出框动画:

var tl = TimelineLite.exportRoot(); //将全部动画导出至tl
TweenLite.to(tl, 0.5, {timeScale:0}); //将tl逐渐减速
 
//这个动画不会受到影响,因为其是导出后创建的
TweenLite.fromTo(myWindow, 1, {scaleX:0, scaleY:0}, {scaleX:1, scaleY:1});

导出的时间轴同时也属于根时间轴,你可以多次导出根时间轴,但是最好能规划避免混乱。

//导出之前先判断之前的导出是否还存在
if (allAnimations) {
    var animations = allAnimations.getChildren(),
        startTime = allAnimations.startTime(),
        root = allAnimations.timeline,
        l = animations.length,
        i;
    for (i = 0; i < l; i++) {
        root.add(animations[i], animations[i].startTime() + startTime);
    }
    allAnimations.kill();
}
//now do the export
allAnimations = TimelineLite.exportRoot();

TimelineMax.exportRoot()适用于TimelineMaxTimelineLite

TimelineMax.exportRoot()的参数

参数类型必填说明
varsObject(default = null) 传递给时间轴的参数,如delay,onUpdate, onComplete等,还可使用useFrames来决定是导出基于时间的时间轴还是基于帧的时间轴。
omitDelayedCallsBoolean(default = true)将延迟调用保留在根时间轴而不是新时间轴,如果你pause()或者调节了timeScale,或reverse(),他们将不受影响。

TimelineMax.exportRoot() 示例

TimelineMax.exportRoot()返回值

TimelineMax.exportRoot()的补充说明

由于根时间轴有自动清理机制(autoRemoveChildren),因此有些动画和时间轴你可能不能导出。