2015-10-14 29 views
0

我需要一个函数,它可以获取每次调用该线时执行位移所需的值。 如果我使用line.play()line.reverse()该值被缓存,并且不调用该函数。我怎样才能让它每次调用这个函数(但不是每次都重新创建时间轴)?如何保持TimelineMax内更新的值?

下面是代码:

var line; 

var getLeftPosition = function() { 
    return ($("body").width() - $("#dvCart").width()) + "px"; 
} 

$("#btnCart").click(function() { 

    if (!line) { 
     line = new TimelineMax() 
      .to("#dvCart", .1, { display: "block" }) 
      .to("#dvLock", .7, { 
       backgroundColor: "#fff", 
       opacity: 0.5, 
       filter: "alpha(opacity=20)", 
       width: "100%", 
       height: "100%", 
       top: "0", 
       left: "0", 
       position: "fixed", 
       display: "block", 
       ease: Power3.easeInOut 
      }) 
      .to("#dvCart", .5, { 
       "left": getLeftPosition(), 
       ease: Power3.easeInOut 
      }); 

     $("#dvLock").click(function() { 
      line.reverse(); 
     }); 
    } 
    else { 
     line.play(); 
    } 
}); 

为了帮助阅读:

  • 点击第一次时,我希望它初始化时间表;
  • 每隔一段时间,它只会播放时间表;
  • 当点击dvLock时,购物车需要消失;
  • dvLock是放在购物车后面的div,用于锁定屏幕;
  • dvCart是一个包含一堆选定项目的div;

回答

0

发布这个问题后,它变得清晰如何搜索。经过Google搜索后,我找到了一个方法:在TweenMax上使用updateTo函数。

我在回答我的问题,以帮助任何可能需要它的人。

的代码变成这样的:

var line; 

var getLeftPosition = function() { 
    return ($("body").width() - $("#dvCart").width()) + "px"; 
} 

var moveToLeft; 

$("#btnCart").click(function() { 

    if (!line) { 

     line = new TimelineMax() 
      .to("#dvLock", .1, { zIndex: 1031 }) 
      .to("#dvCart", .1, { display: "block" }) 
      .to("#dvLock", .7, { 
       backgroundColor: "#fff", 
       opacity: 0.5, 
       filter: "alpha(opacity=20)", 
       width: "100%", 
       height: "100%", 
       top: "0", 
       left: "0", 
       position: "fixed", 
       display: "block", 
       ease: Power3.easeInOut 
      }) 
      .append(moveToLeft = TweenMax.to("#dvCart", .5, { 
       "left": getLeftPosition(), 
       ease: Power3.easeInOut 
      })); 

     $("#dvLock").click(function() { 
      moveToLeft.updateTo({ 
       "left": getLeftPosition() 
      }); 
      line.reverse(); 
     }); 

    } 
    else { 
     moveToLeft.updateTo({ 
      "left": getLeftPosition() 
     }); 
     line.play(); 
    } 
}); 

因此,每个reverseplay之前,它更新左侧位置。