הייתם בהרבה לחץ לאחרונה? יותר מדי מחשבות? תשלחו אותם לעננים!  
פרוייקט 
קוד כל הקוד זמין.  
https://github.com/Ilya122/ThoughtsCloud 
 
קצת נקודות טכניות כל הקוד הוא 157 שורות של javascript.  
Canvas הקנבס הוא אזור לציור טקסט, צורות, תמונות וכדו’…  
כדי לקבל את אזור הציור אנחנו צריכים 2 דברים:  
קנבס - לציור  
קונטקסט - מצייר למסך 
 
1 2 3 <div  id ="main"  class ="container is-widescreen is-fluid"  style ="width:auto;height:640px" >     <canvas  id ="drawingArea"  style ="width:100%;height:640px" > </canvas >  </div > 
 
1 2 canvas = document .getElementById ('drawingArea' ); ctx = canvas.getContext ('2d' ); 
 
מחלקות אני אוהב להשתמש ב-OOP ואני רגיל מפיתוח משחקים לצייר את זה בלולאת משחק. לולאת משחק היא לולאה שעושה:  
עדכון - מעדכנת את כל היישויות במסך  
ציור - מצייר את המצב הנוכחי, בדרך כלל מנקה הכל ומצייר הכל מחדש 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 class  Word  {    constructor (text, x, y, velocityY, size, alpha = 1.0  ) {         this .Text  = text;         this .X  = x;         this .Y  = y;         this .VelocityY  = velocityY;         this .Size  = size;         this .Alpha  = alpha;     }     Update () {         this .VelocityY  -= 1 ;         this .Y  -= this .VelocityY ;         this .Alpha  -= 0.02 ;      }     Draw (context) {         context.fillStyle  = "rgba(183, 234, 255, "  + this .Alpha  + ")" ;         context.font  = `${this .Size} pt Arial` ;         context.fillText (this .Text , this .X , this .Y );     }     IsStopped () {         return  this .Alpha  < 0 ;     } } class  Cloud  {    constructor (image, x, y, velocityX, velocityY ) {         this .Image  = image;         this .X  = x;         this .Y  = y;         this .VelocityX  = velocityX;         this .VelocityY  = velocityY;     }     Update (canvas) {         this .X  += this .VelocityX ;         this .Y  += this .VelocityY ;         if  (this .X  > canvas.width ) {             this .X  = 0 ;         }     }     Draw (context) {         context.drawImage (this .Image , this .X , this .Y );     } } 
 
התזוזה נעשת בעזרת עדכון הקורדינטות. והיא נשלטת בידי משתנה Velocity. כדי ליצור אפקט תזוזה שנחלש הקוד מוריד את הערך של Velocity.  
לולאת הציור הראשית:  
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 function  drawCanvas ( ) {    ctx.clearRect (0 , 0 , canvas.width , canvas.height );     for  (let  i = 0 ; i < window .clouds .length ; i++) {         let  cloud = window .clouds [i];         cloud.Update (canvas);         cloud.Draw (ctx);     }     ctx.font  = '12px serif' ;     let  len = window .wordList .length ;     let  toRemove = [];     for  (let  i = 0 ; i < len; i++) {         let  word = window .wordList [i];         word.Update ();         word.Draw (ctx);         if  (word.IsStopped ()) {             toRemove.push (word);         }     }     toRemove.forEach (word  =>  {         const  index = window .wordList .indexOf (word);         if  (index > -1 ) {             window .wordList .splice (index, 1 );          }     }); } 
 
אתם יכולים לקרוא את הקוד בעצמכם.  
תודה על הקריאה!