まず第一に、私は GSAP と ScrollMagic を初めて使用するので、ここでばかげた質問をしている可能性がある場合はご容赦ください。私はインターネットを見てきましたが、私の問題に対する正しい答えを見つけることができませんでした.
とにかく、私はタイムラインを作成しようとしています。各「to」関数の完了時に、特定のパラメーターを使用して外部関数への呼び出しが行われます。
var controller = new ScrollMagic.Controller();
var timeline = new TimelineLite();
var div = $('div');
timeline.to(div, 0.5, {
opacity: 0,
onComplete: toggleOverlay(0)
}, "part-1")
.to(div, 0.5, {
opacity: 1,
onComplete: toggleOverlay(1)
}, "part-2")
.to(div, 0.5, {
opacity: 0,
onComplete: toggleOverlay(2)
}, "part-3");
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger-event",
duration: 500
})
.setTween(timeline)
.addTo(controller);
function toggleOverlay(i){
console.log(i);
}
ここで何が起こるか: スクロール位置が「#trigger-event」に達すると、タイムラインが呼び出されます。その後、「.to」関数は、トリガー イベントの後、終了 (期間) 前のスクロール位置に基づいて呼び出されます。
ここで直面する問題は、onComplete 関数がページの読み込み時に直接呼び出されることです。これはおそらく「.setTween(timeline)」と関係があります。タイムライン全体に読み込まれると想像できます。
私の問題の解決策は何ですか、または良い代替方法は何ですか?
編集: ここに JSFiddle があります: https://jsfiddle.net/04db5ja5/
よろしくお願いします、エンツィオ