three.js, tween.jsを使用して、ランダムに動くパーティクルがページの中央までスクロールすると集合し図形を型取り、ページ下部までスクロールするとまたランダムな動きに戻るという実装をしました。
ゆっくりスクロールすると想定通りの動きをするのですが、スクロールが早いと集合した図形のままとまってしまい、ランダムに戻らなくなってしまいます。
以下、現状のデモになります。
スクロールイベントは以下のようなコードで実装しているのですが、どこを修正すれば早いスクロールでも想定通りの動きになるのでしょうか。
Jacascript
1var random_judge = false 2 var dfractal_judge = false 3 $(window).scroll(function() { 4 var scTop = $(window).scrollTop() 5 if (scTop <= start_point || scTop >= end_point) { 6 if (!random_judge) { 7 random_judge = true 8 dfractal_judge = false 9 transform_random() 10 } 11 } else if (scTop > start_point && scTop <= end_point) { 12 if (!dfractal_judge) { 13 random_judge = false 14 dfractal_judge = true 15 transform_dfractal() 16 } 17 } 18 }) 19 20 function transform_random() { 21 // wrapper.position.y = 0 22 const SIZE = 500 23 for (var i = 0; i < par_n; i++) { 24 for (var j = 0; j < d_fractalArray[0].length; j++) { 25 if (rndArray[i][j]) { 26 pTween[j] = new TWEEN.Tween(geometry[i].vertices[j]) 27 .to({ x: rndArray[i][j].x, y: rndArray[i][j].y, z: rndArray[i][j].z }, 1000) 28 .easing(TWEEN.Easing.Quintic.In) 29 .start() 30 } 31 } 32 } 33 } 34 35 function transform_dfractal() { 36 wrapper.position.x = 120 37 var hogen = 0 38 for (var i = 0; i < par_n; i++) { 39 for (var j = 0; j < d_fractalArray[0].length; j++) { 40 if (d_fractalArray[i][j]) { 41 pTween[j] = new TWEEN.Tween(geometry[i].vertices[j]) 42 .to({ x: d_fractalArray[i][j].x * 1.1 + 100, y: d_fractalArray[i][j].y * 1.1, z: d_fractalArray[i][j].z * 1.1 }, 2500) 43 .easing(TWEEN.Easing.Quartic.Out) 44 .start() 45 } else { 46 num = j - 794 47 pTween[j] = new TWEEN.Tween(geometry[i].vertices[j]) 48 .to({ x: d_fractalArray[i][num].x * 1.1 + 100, y: d_fractalArray[i][num].y * 1.1, z: d_fractalArray[i][num].z * 1.1 }, 2500) 49 .easing(TWEEN.Easing.Quartic.Out) 50 .start() 51 } 52 }; 53 } 54 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/22 05:17