2017-04-25 110 views
0

我在使用Greensock TweenMax時間軸的actionscript 3中工作。我有一個頁面滾動兩個按鈕(回到頂部,並停止/播放按鈕)。 滾動器會自動播放onLoad,延遲時間爲4秒。當我按停止/播放按鈕時,它不會停止延遲。它必須等待整整四秒才能發揮作用。此外,4秒延遲僅在滾輪首次運行時發生。每當滾動條重複時,我怎樣才能獲得4秒的延遲?我怎樣才能獲得停止/播放按鈕來覆蓋延遲和播放?我已經爲此工作了兩天,並嘗試了各種技術(循環,定時器,延遲調用等),但都沒有成功。如果有人有想法,我將不勝感激。如何覆蓋TweenMax中的延遲?

1)開始的時間線代碼:

myTween = new TweenMax(content_mc, 60, {delay:4, y:22, ease: Power0.easeNone, onComplete: restartFromTop }); 

2)該功能控制停止/播放按鈕

private function toggler(e:MouseEvent = null):void 
    {   

      if (playState == true){ 
      toggleBtn.gotoAndStop(2); 
      myTween.pause(); 
      playState = false; 
      trace("MC is now paused and stopped"); 
     } 

      else if(playState == false) { 
      myTween.resume(); 
      toggleBtn.gotoAndStop(1); 
      playState = true; 
      trace("MC is resumed from pause"); 
     } 
    } 

3)該功能控制卷軸的重新起動時,它重複。

private function restartFromTop():void 
     {  
      myTween.restart() 
      playState = true; 
     } 

4)此功能控制回頂部按鈕

private function backToTop(event:MouseEvent):void 
     { 
      myTween.reverse(); 

      if (playState == true){ 
       myTween.restart(); 
       myTween.resume();//stop animation 
       //toggleBtn.gotoAndStop(2);//changes button to pause 
       toggleBtn.buttonMode = true; 
       trace("page is scrolling"); 
      } 

      if (playState == false){ 
       myTween.restart(); 
       myTween.pause();//stop animation 
       trace("play button is paused"); 
       trace(timer); 
      } 

//Adds a hand cursor on the button and adds a click event to the button. 
      toggleBtn.buttonMode = true; 
      toggleBtn.addEventListener(MouseEvent.CLICK, toggler); 
     } 

回答

1

我無法重現您所面臨的第一個問題,那就是延遲與pauseresume問題。我嘗試了一個簡單的補間,延遲了4秒,並且能夠暫停並恢復補間,而不會有任何延遲。

對於restart其他問題,TweenMax restart功能需要幾個參數,第一個是includeDelay:Boolean這是默認設置爲false。將此屬性設置爲true會解決問題。從文檔

摘錄:

includeDelay:布爾(默認值= FALSE) - 確定重啓時 延遲(如果有的話)是否被兌現。例如,如果補間有 延遲1秒,如新的TweenLite(mc,2,{x:100,delay:1});和 然後稍後重新啓動()被調用,它將立即開始,但 重新啓動(true)將導致延遲被授予,以便它不會 開始另一個1秒。

全部文檔,可以發現here

所以,下面的代碼應該可以解決你的重啓問題:

myTween.restart(true); 

爲了您的第一個問題,我建議你創建一個最小的場景重現,如果是這樣,請在這裏發表評論我的答案。

希望這會有所幫助。乾杯。

+0

謝謝。它絕對有助於:) – latoyale