2016-08-29 14 views
3

Greensockを使用しているアニメーションがあります。 このアニメーションが完了し、ユーザーがボタンをクリックすると、アニメーションは逆に再生されます。私が持っている問題は、アニメーションが最初に再生されたときよりも3倍速い逆再生をしたいということです。 私はこれを行う方法を困惑しています。greensockアニメーションを元のアニメーションよりは逆だが速くするにはどうすればいいですか?

現在のコードはうまく動作していますが、逆のアニメーションを高速化する必要があります。 ご協力いただきありがとうございます。 現在のコード:

tl.timeScale(3); 

をそして、することができますチェーンの事を覚えている:それは3にタイムスケールを()の設定のように単純である必要があり

var tl = new TimelineMax(); 
var page4 = function(){ 
    console.log('hello'); 
    tl.staggerFrom("input", 0.5, { 
     marginLeft:"-300px", 
     opacity:0, 
     delay:0.5, 
     force3D:true 
    }, 0.2); 
    tl.staggerFrom("label", 0.5, { 
     opacity:0 
    }, 0.2); 
    tl.staggerFrom("#submit", 0.5, { 
     opacity:0 
    }, 0.2); 
    }; 

$('#submit').on('click', function(e){ 
    e.preventDefault(); 
    tl.reverse(); 
    setTimeout(function(){ 
    contact(); 
    }, 3000); 
}); 

function contact(){ 
    var msg = '<p>Thank you for your submission! Please give us 1 business day to reply back.</p>'; 
    $('.title').append(msg).fadeIn(); 
} 

答えて

5

は、(それが通常よりも3倍速く再生されますを意味します) 、あなたは同時に()、それを逆転できるよう:

tl.reverse().timeScale(3); 

そして、あなたは再び前方に移動する必要があります:

tl.play().timeScale(1); 

これは、ドキュメント内のすべてです:http://greensock.com/docs/#/HTML5/GSAP/

は、私はまた、あなたが3秒後に()連絡先を呼び出すためのsetTimeout()を使用していることに気づきました。これは問題ありませんが、タイムラインが終了するとすぐに呼び出すようにしたい場合は、onComplete:contactとonReverseComplete:contactを設定できます。または、TweenLite.delayedCall()はsetTimeout()と同じように動作しますが、GSAPエンジン全体と常に完全に同期しており、パフォーマンスが向上する可能性があります。

ハッピートゥイーン!

+0

あなたは素晴らしいです!それはまさに私が探していたものであり、私は余分なヒントを感謝しています:) –

+0

アニメーションの逆は、アニメーションが読み込まれた後に送信ボタンをクリックしたときのクリックイベントでのみ発生します。逆のアニメーションを使用してフォームが削除され、contact()メソッドが呼び出されます。どのように私はリバースアニメーションコールだけでコールバックイベントを添付しますか? –

+0

どうやら、onReverseComplete:functionメソッドがあります。これはまさに私が探していたものです。 –

関連する問題