Postingan kali ini tentang JavaScript "Bola Bertebaran".
Dimana lisitng program ini disimpan dalam bentuk formati html.
Berikut Listingnya.!!
Dimana lisitng program ini disimpan dalam bentuk formati html.
Berikut Listingnya.!!
| <canvas height="400" id="semburan" width="650"></canvas> | |
| <script type="text/javascript"> | |
| //Membuat variable dan mulai menentukan jari-jari bola | |
| var line = { | |
| x: 400, | |
| y: 0, | |
| length: 100, | |
| angle: 0 | |
| }; | |
| //Memfungsikan dengan this yang nantinya akan di panggil di translate. | |
| function Ball(x, y, r) { | |
| this.x = 300; | |
| this.y = 400; | |
| this.r = 25; | |
| this.vx = 300; | |
| this.vy = 300; | |
| Ball.all.push(this); | |
| } | |
| //Menggambar seluruh bola dan menetapkan panjang. | |
| Ball.all = []; | |
| Ball.draw_all = function() { | |
| var i = Ball.all.length; | |
| while (i--) { | |
| Ball.all[i].draw(); | |
| } | |
| }; | |
| //mulai memanggil this yang sudah di berikan, Seperti terlihat di ctx.translate. | |
| Ball.prototype = { | |
| draw: function() { | |
| ctx.save(); | |
| ctx.translate(this.x, this.y, this.vx, this.vy, this.vx); | |
| ctx.fillStyle = "red"; | |
| ctx.beginPath(); | |
| //Menggambar lingkaran dengan metode arcs. | |
| ctx.arc(0, 0, this.r, 0, Math.PI * 2, true); | |
| ctx.closePath(); | |
| ctx.fill(); | |
| ctx.restore(); | |
| }, | |
| //memindahkan function lalu mengindex seluruh bola. | |
| remove: function() { | |
| Ball.all.splice(Ball.all.indexOf(this), 1); | |
| } | |
| }; | |
| //menentukan id yang akan di panggil dalam bidang canvas HTML5 | |
| var canvas = document.getElementById("semburan"); | |
| var ctx = canvas.getContext('2d'); | |
| setInterval(function() { | |
| ctx.save(); | |
| ctx.fillStyle = "#f5f5f5"; | |
| ctx.fillRect(0, 0,800,400); | |
| ctx.restore(); | |
| //Mulai menganimasi berapa banyak bola dan penentuan coordinate | |
| line.angle += (Math.PI * 2) / 20; | |
| var x = line.x + line.length * Math.cos(line.angle); | |
| var y = line.y + line.length * Math.cos(line.angle); | |
| if (Ball.all.length < 100) { | |
| for (var i = 0; i < 5; i++) { | |
| var ball = new Ball(x, y, 2); | |
| var random_offset = Math.random() * 1 - .5; | |
| var speed = Math.random() * 15 + 3; | |
| ball.vx = speed * Math.cos(line.angle + random_offset); | |
| ball.vy = speed * Math.sin(line.angle + random_offset); | |
| } | |
| } | |
| var i = Ball.all.length; | |
| while(i--) { | |
| var ball = Ball.all[i]; | |
| ball.x += ball.vx; | |
| ball.y += ball.vy; | |
| ball.vy += .2; | |
| ball.vx *= 1; | |
| ball.vy *= .99; | |
| if (ball.x % 800 !== ball.x) { | |
| ball.remove(); | |
| } | |
| else if (ball.y >= 130) { | |
| ball.vy = -Math.abs(ball.vy); | |
| ball.vy *= 1; | |
| if (Math.abs(ball.vy) < 1 && Math.abs(ball.vx) < 1) { | |
| ball.remove(); | |
| } | |
| } | |
| } | |
| //Melakukan metode save dan restore, perlu di perhatikan di sini yaitu moveto | |
| //lineto yang memberikan nilai line.x. line.y sobat bisa memodifikasinya sendiri | |
| ctx.save(); | |
| ctx.beginPath(); | |
| ctx.moveTo(line.x, line.y); | |
| ctx.lineTo(x, y); | |
| ctx.fill(); | |
| ctx.restore(); | |
| Ball.draw_all(); | |
| }, 1000 / 77); | |
| </script> Hasilnya Nanti i gambar diatas, Tapi Dia dalam bentuk animasi. |







0 Komentar:
Posting Komentar