За последние 24 часа нас посетили 21770 программистов и 1014 роботов. Сейчас ищут 628 программистов ...

Как сделать плавную анимацию волнами на js?

Тема в разделе "JavaScript и AJAX", создана пользователем Katy93, 29 май 2021.

  1. Katy93

    Katy93 Активный пользователь

    С нами с:
    3 янв 2019
    Сообщения:
    69
    Симпатии:
    0
    Создаю анимацию использую для этого библиотеку TweenLite. Мне нужно чтобы четыре объекта перемещались вверх вниз, при этом чтобы выглядело как волна. Например один объект оказался внизу, то он должен сразу стартовать вверх потом другой объект оказался внизу и он тоже должен стартовать вверх и так далее. В итоге получается так, сначала все объекты оказываются внизу и уже потом стартуют. Вот код:
    Код (Text):
    1. <!DOCTYPE HTML>
    2. <html>
    3.     <head>
    4.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    5.     <title>Tween</title>
    6.    
    7.       <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
    8. <script src='https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/TweenLite.min.js'></script>
    9. <script src='https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/plugins/CSSPlugin.min.js'></script>
    10. <script src='https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/easing/EasePack.min.js'></script>
    11.  
    12. </head>
    13.     <body>
    14.  
    15.          <canvas id="canvas" width="670" height="500" style="background-color:#eee; border:1px solid #ccc;"></canvas>
    16. <script>
    17. var canvas = document.getElementById('canvas');
    18. var ctx = canvas.getContext('2d');
    19.  
    20. var canvas = document.getElementById('canvas');
    21.  
    22. var x = 50;
    23. var y = 50;
    24.  
    25.  
    26. Rectangle = function(x,y,width,height)
    27. {
    28.   this.x = x;
    29.   this.y = y;
    30.   this.width = width;
    31.   this.height = height;
    32.   this.draw = function(ctx)
    33.   {
    34.     ctx.beginPath();
    35.     ctx.fillRect(this.x, this.y, this.width, this.height);
    36.   }
    37. }
    38. var rect1;
    39. var rect2;
    40. var rect3;
    41. var rect4;
    42. var obj;
    43. function animate() {
    44.    ctx.clearRect(0,0,canvas.width,canvas.height);
    45.    rect1.draw(ctx);
    46.    rect2.draw(ctx);
    47.    rect3.draw(ctx);
    48.    rect4.draw(ctx);
    49.    requestAnimationFrame(animate);
    50. }
    51.  
    52.  
    53. function init()
    54. {
    55. rect1 = new Rectangle(50,50,20,40);
    56. rect2 = new Rectangle(80,70,20,40);
    57. rect3 = new Rectangle(110,90,20,40);
    58. rect4 = new Rectangle(140,110,20,40);
    59. }
    60.  
    61. init();
    62. animate();
    63.  
    64. tweenSquare(rect1);
    65. tweenSquare2(rect2);
    66. tweenSquare3(rect3);
    67. tweenSquare4(rect4);
    68. function tweenSquare(s) {  
    69.  
    70.    
    71.  
    72.   TweenLite.to(s, 2, {y:250, ease: Cubic.easeInOut,delay:0.4, onComplete: function() {
    73.     TweenLite.to(s, 2, {y:50, ease: Cubic.easeInOut, onComplete: function() {
    74.       tweenSquare(s);
    75.     }})
    76.   }});
    77.  
    78.  
    79.  
    80.  
    81. }
    82.  
    83. function tweenSquare2(s) {
    84.   TweenLite.to(s, 2, {y:250, ease: Cubic.easeInOut,delay:0.3,onComplete: function() {
    85.     TweenLite.to(s, 2, {y:50, ease: Cubic.easeInOut,onComplete: function() {
    86.       tweenSquare(s);
    87.     }})
    88.   }});
    89. }
    90. function tweenSquare3(s) {
    91.   TweenLite.to(s, 2, {y:250, ease: Cubic.easeInOut,delay:0.2,onComplete: function() {
    92.     TweenLite.to(s, 2, {y:50, ease: Cubic.easeInOut, onComplete: function() {
    93.       tweenSquare(s);
    94.     }})
    95.   }});
    96. }
    97. function tweenSquare4(s) {
    98.   TweenLite.to(s, 2, {y:250, ease: Cubic.easeInOut,delay:0.1, onComplete: function() {
    99.     TweenLite.to(s, 2, {y:50, ease: Cubic.easeInOut, onComplete: function() {
    100.       tweenSquare(s);
    101.     }})
    102.   }});
    103. }
    104. // 7. Callback functions
    105. function start(){
    106.   console.log('start');
    107. }
    108.  
    109. function update(){
    110.   console.log('animating');
    111. }
    112.  
    113. function complete(){
    114.   console.log('end');
    115. }
    116.  
    117. </script>
    118. </body>
    119. </html>