Download - Modul java animasi

Transcript
Page 1: Modul java animasi

Modul 10: Animasi

Page 2: Modul java animasi

Program Animasi adalah program yang “menggambar” serangkaian bentuk pada lokasi atau posisi yang ber-urutan.

Pada bahasa Java, program animasi adalah program Applet dengan susunan sebagai berikut:

Page 3: Modul java animasi

import java.applet.*;import java.awt.*;public class nama_applet extends Applet implements Runnable {

Thread runner; // definisikan variabel-variable disiniint xpos;

public void start() { // definisikan fungsi start()if (runner == null) {

runner = new Thread(this);runner.start();

}}public void stop() { // definisikan fungsi stop()

if (runner != null) {runner.stop();runner = null;

}}// definisikan fungsi run() // apa yang akan ditampilkan sebagai animasi di-tulis disinipublic void run() {

...........................................

..........................................}// definisikan bentuk, teks, atau gambar disinipublic void paint (Graphics g) {

// warna latar belakang dengan g.setColor()// bentuk font dengan g.setFont()// gambar bentuk dengan g.fillRect(), g.fillOval() dsb.

}}

Page 4: Modul java animasi

Contoh-1 : animasi lingkaran yang bergerak, pada program ini sebuah lingkaran warna merah dibentuk (digambar) pada posisi berbeda namun berdekatan, dengan latar belakang warna putih dan hitam sehingga efek bergerak dari kiri ke kanan dan sebaliknya, tampak jelas.

animasi.java animasi.html

Page 5: Modul java animasi

/* Program Animasi */

import java.awt.Graphics;import java.awt.Color;

public class Animasi extends java.applet.Applet implements Runnable {

Thread runner; int xpos; int ux1,ux2;

public void start() { if (runner == null); { runner = new Thread(this); runner.start(); } }

public void stop() { if (runner != null) { runner.stop(); runner = null; } }

Page 6: Modul java animasi

public void run() { setBackground(Color.blue); while (true) {/* bergerak ke kanan */ for (xpos = 5; xpos <= 105; xpos+=4) {

ux2 = xpos + 90;repaint();try { Thread.sleep(100); }catch (InterruptedException e) { }if (ux1 == 0) ux1 = xpos;

} /* bergerak ke kiri */ for (xpos = 105; xpos > 5; xpos -=4) {

ux1 = xpos; repaint();

try { Thread.sleep(100); }catch (InterruptedException e) { }if (ux2 == 0) ux2 = xpos + 90;

} } }

Page 7: Modul java animasi

public void update(Graphics g) { g.clipRect(ux1, 5, ux2 - ux1, 95); paint(g); }

public void paint(Graphics g) { // Draw black background g.setColor(Color.black); g.fillRect(0,0,100,100); // Draw white background g.setColor(Color.white); g.fillRect(100,0,100,100);

// Draw checker / red circle g.setColor(Color.red); g.fillOval(xpos,5,90,90);

// reset the drawing area ux1 = ux2 = 0; }}

Page 8: Modul java animasi

Contoh-2 : Animasi gerak dari serentetan gambar kucing, pada program ini akan ditampilkan 9 macam gambar kucing, gambar 1,2 digunakan untuk effek berlari dari kiri ke kanan, gambar 3,4 untuk efek istirahat, gambar 5,6 untuk effek menggaruk, gambar 7,8 untuk effek tidur, dan gambar 9 untuk effek terbangun kaget.

Neko.java Neko.html

Page 9: Modul java animasi

/* Program Animasi gambar kucing - (Neko=kucing dalam bahasa Jepang) */

import java.awt.Graphics;import java.awt.Image;import java.awt.Color;import java.applet.*;

public class Neko extends Applet implements Runnable {

/* nama-nama gambar dimasukkan dalam satu verktor */ Image nekopics[] = new Image[9]; String nekosrc[] = { "right1.gif", "right2.gif", "stop.gif", "yawn.gif", "scratch1.gif", "scratch2.gif", "sleep1.gif", "sleep2.gif", "awake.gif" }; Image currentimg; Thread runner; int xpos; int ypos = 50;

Page 10: Modul java animasi

public void start() { if (runner == null) { runner = new Thread(this); runner.start(); } }

public void stop() { if (runner != null) { runner.stop(); runner = null; } }

public void run() {

// initialize, file-file gambar berada dibawah direktori "images/" for (int i=0; i < nekopics.length; i++) { nekopics[i] = getImage(getCodeBase(), "images/" + nekosrc[i]); } // warna latar belakang adalah putih setBackground(Color.white); // lakukan animasi hingga 100 kali for (int idx=0; idx<100; idx++) {

Page 11: Modul java animasi

// panggil fungsi untuk menggerakkan kucing ke kanan hingga tengah nekorun(0, this.size().width / 2);

// stop and pause, kucing berhenti currentimg = nekopics[2]; repaint(); pause(100); // yawn, mengantuk currentimg = nekopics[3]; repaint(); pause(1000);

// scratch four times, menggaruk nekoscratch(4);

// sleep for 5 seconds, tidur nekosleep(5);

Page 12: Modul java animasi

// wake up and run off, bangun dan lari lagi currentimg = nekopics[8]; repaint(); pause(500); nekorun(xpos, this.size().width + 10); } }

// fungsi untuk menggerakkan kucing ke kanan void nekorun(int start, int end) { for (int i = start; i < end; i+=10) { this.xpos = i; // swap images if (currentimg == nekopics[0])

currentimg = nekopics[1]; else if (currentimg == nekopics[1])

currentimg = nekopics[0]; else currentimg = nekopics[0];

repaint(); pause(150); } }

Page 13: Modul java animasi

// fungsi yang menampilkan kucing menggaruk void nekoscratch(int numtimes) { for (int i = numtimes; i > 0; i--) { currentimg = nekopics[4]; repaint(); pause(150); currentimg = nekopics[5]; repaint(); pause(150); } }

// fungsi untuk menampilkan kucing tidur void nekosleep(int numtimes) { for (int i = numtimes; i > 0; i--) { currentimg = nekopics[6]; repaint(); pause(250); currentimg = nekopics[7]; repaint(); pause(250); } }

Page 14: Modul java animasi

void pause(int time) { try { Thread.sleep(time); } catch (InterruptedException e) { } }

public void paint(Graphics g) { g.drawImage(currentimg, xpos, ypos,this); }}

Page 15: Modul java animasi

Contoh-3 : Animasi Teks, pada program ini sebuah kalimat (teks) yang dimasukkan melalui parameter HTML, akan ditampilkan dengan efek gerak dari kanan ke kiri.

Ticker4.java Ticker4.html

Page 16: Modul java animasi

Contoh 4: animasi pixel, nilai integer dari pixel dibaca secara acak, kemudian ditampilkan kembali dengan menggunakan rutin animasi

AnimasiPixel.java AnimasiPixel.html