Cara Membuat Animasi Starfield dengan Javascript

Berfokus pada bidang desain serta artistik, kehadiran P5.js sebagai subsider dari Javascript selalu memberikan inspirasi tersendiri bagi para pengembang web. Seringkali, penggunaan P5.js dilibatkan dalam pemberian efek background (maupun transisi) pada suatu website. Juga, para pengembang web sering berinteraksi dengan bahasa pemrograman terkait sebagai media animasi (melalui berbagai package yang telah mendukung P5.js).

Sebagai presentasi dari fungsionalitas animasi, pada artikel kali ini, kita akan membuat animasi starfield menggunakan bahasa pemrograman P5.js (subsider dari Javascript).

Langkah:

1. Persiapkan text editor (notepad, sublime text, dan sebagainya) sebagai media pengetikan syntax nantinya.

2. Buatlah file yang bernama index.html yang berisikan kode sebagai berikut:

<html>
<head>
  <title>Inwepo Starfield</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.7/p5.min.js"></script>
  <style>
  </style>
</head>
<body>
  <script>
  </script>
</body>
</html>

3. Pada bagian <style>, masukkan kode berikut:

h1, p {
  text-align: center;
  font-family: 'Segoe UI', 'Courier New', sans-serif;
  color: #fff;
}
	
canvas {
  position: fixed;
  left: 0;
  top: 0;
}

Nantinya, bagian <style> akan memiliki struktur kode sebagai berikut:

<style>
	h1, p {
	  text-align: center;
	  font-family: 'Segoe UI', 'Courier New', sans-serif;
	  color: #fff;
	}
		
	canvas {
	  position: fixed;
	  left: 0;
	  top: 0;
	}
</style>

4. Pada bagian <script>, masukkan kode berikut:

var stars = [],
    WIDTH = window.innerWidth,
    HEIGHT = window.innerHeight,
    FPS = 10,
    NUM_STARS = WIDTH;

function setup() {
  createCanvas(WIDTH, HEIGHT);
  
  for (var i = 0; i < NUM_STARS; i++) {
    stars.push({
      x: 0,
      y: 0,
      offset: Math.random() * 360,
      orbit: (Math.random()+0.01) * max(WIDTH, HEIGHT),
      radius: Math.random() * 2,
      vx: Math.floor(Math.random() * 10) - 5,
      vy: Math.floor(Math.random() * 10) - 5
    });
  }
  
  frameRate(FPS);
  loop();
}

function draw() {
  background(24, 24, 24);
  push();
  noFill();
  colorMode(RGB, 255, 255, 255, 1);
  stroke(240,240,240, 1);
  strokeCap(ROUND);
  strokeWeight(2);
  for (var i = 0, x = stars.length; i < x; i++) {
    var s = stars[i];
    ellipse(s.x, s.y, s.radius, 0);
  }
  pop();
  update();
  header();
}

function update() {
  var originX = WIDTH / 2;
  var originY = HEIGHT / 2;
  
  for (var i = 0, x = stars.length; i < x; i++) {
    var s = stars[i];
    var rad = (frameCount * (1/(s.orbit*2 + s.offset)) + s.offset) % TAU;
    s.x = (originX + cos(rad)*(s.orbit*2));
    s.y = (originY + sin(rad)*(s.orbit));
  }
}

function header(){
	fill(24, 24, 24);
	rect(0,0,width,100);
	fill(255);
	textFont('Segoe UI');
	textSize(50);
	textAlign(CENTER);
	text("Inwepo Starfield", width/2, 60);
}

function windowResized() {
    WIDTH = window.innerWidth,
    HEIGHT = window.innerHeight,
    resizeCanvas(WIDTH, HEIGHT);
}

Nantinya, bagian <script> akan memiliki struktur kode sebagai berikut:

<script>
	var stars = [],
		WIDTH = window.innerWidth,
		HEIGHT = window.innerHeight,
		FPS = 10,
		NUM_STARS = WIDTH;

	function setup() {
	  createCanvas(WIDTH, HEIGHT);
	  
	  for (var i = 0; i < NUM_STARS; i++) {
		stars.push({
		  x: 0,
		  y: 0,
		  offset: Math.random() * 360,
		  orbit: (Math.random()+0.01) * max(WIDTH, HEIGHT),
		  radius: Math.random() * 2,
		  vx: Math.floor(Math.random() * 10) - 5,
		  vy: Math.floor(Math.random() * 10) - 5
		});
	  }
	  
	  frameRate(FPS);
	  loop();
	}

	function draw() {
	  background(24, 24, 24);
	  push();
	  noFill();
	  colorMode(RGB, 255, 255, 255, 1);
	  stroke(240,240,240, 1);
	  strokeCap(ROUND);
	  strokeWeight(2);
	  for (var i = 0, x = stars.length; i < x; i++) {
		var s = stars[i];
		ellipse(s.x, s.y, s.radius, 0);
	  }
	  pop();
	  update();
	  header();
	}

	function update() {
	  var originX = WIDTH / 2;
	  var originY = HEIGHT / 2;
	  
	  for (var i = 0, x = stars.length; i < x; i++) {
		var s = stars[i];
		var rad = (frameCount * (1/(s.orbit*2 + s.offset)) + s.offset) % TAU;
		s.x = (originX + cos(rad)*(s.orbit*2));
		s.y = (originY + sin(rad)*(s.orbit));
	  }
	}

	function header(){
		fill(24, 24, 24);
		rect(0,0,width,100);
		fill(255);
		textFont('Segoe UI');
		textSize(50);
		textAlign(CENTER);
		text("Inwepo Starfield", width/2, 60);
	}

	function windowResized() {
		WIDTH = window.innerWidth,
		HEIGHT = window.innerHeight,
		resizeCanvas(WIDTH, HEIGHT);
	}
</script>

5. Save file yang telah dimodifikasi sebelumnya. Lalu, buka file index.html melalui browser kamu. Jika berhasil, pada website, akan memunculkan konten tulisan dan animasi gerakan melingkar suatu obyek layaknya starfield pada umumnya. Sesuaikan penggunaan animasi starfield dengan website yang telah kamu buat.

Demikian tutorial cara membuat animasi starfield dengan Javascript. Semoga bermanfaat.

Komentar

Leave a Reply

Your email address will not be published. Required fields are marked *

Leave the field below empty!

Trending Minggu Ini

Inwepo adalah media platform yang membantu setiap orang untuk belajar dan berbagi tutorial, tips dan trik cara penyelesaian suatu masalah di kehidupan sehari-hari dalam bentuk teks, gambar. dan video.

Dengan bergabung bersama kami dan membuat 1 tutorial terbaik yang kamu miliki dapat membantu jutaan orang di Indonesia untuk mendapatkan solusinya. Ayo berbagi tutorial terbaikmu.

Ikuti Kami di Sosmed

Inwepo Navigasi

Tentang Kami             Beranda

Hubungi Kami             Panduan Penulis

Kebijakan Privasi

FAQ

Partner

Copyright © 2014 - 2024 Inwepo - All Rights Reserved.

To Top