mgdw4 online camp #6b: sound

12
Mobile Games Developer War 4: Online Camp MGDW4 Online Camp #6b Sound FX

Upload: agate-studio

Post on 09-Jun-2015

558 views

Category:

Education


0 download

TRANSCRIPT

Page 1: MGDW4 Online Camp #6b: Sound

Mobile Games Developer War 4: Online Camp

MGDW4 Online Camp #6b

Sound FX

Page 2: MGDW4 Online Camp #6b: Sound

Mobile Games Developer War 4: Online Camp

MMAPI

• Mobile Media API merupakan package tambahan di J2ME, yang menyediakan API untuk rendering dan menampilkan media, seperti audio dan video klip.

4 komponen utama MMAPI

1. Player untuk memainkan media

2. Manager untuk mengontrol media

3. DataSource merepresentasikan protokol handler. Gunanya untuk membaca media data dan memberikannya pada Player untuk dimainkan

4. Control untuk mengontrol berbagai macam operasi dari Player

Page 3: MGDW4 Online Camp #6b: Sound

Mobile Games Developer War 4: Online Camp

MMAPI

Page 4: MGDW4 Online Camp #6b: Sound

Mobile Games Developer War 4: Online Camp

Lifecycle Player

Life-cycle Player berisi lima keadaan: UNREALIZED, REALIZED, PREFETCHED, STARTED, dan CLOSED. Ke enam method menghasilkan transisi keadaan:realize()prefetch()start()stop()deallocate()close()

• Ketika sebuah player dibuat, berubah ke keadaan UNREALIZED.• Kemudian memanggil realize() pindah ke keadaan REALIZED dan menganalisa informasi.• Memanggil prefetch() keadaan pindah ke PREFETCHED, menetapkan koneksi jaringan untuk streaming data, dan melakukan tugas-tugas inisialisasi lainnya.• Memangil start() menyebabkan transisi ke keadaan STARTED, dimana player dapat memproses data.• Ketika selesai memproses data (sampai ke bagian terakhir data), akan mengembalikan keadaan PREFETCHED.• Memanggil close() meyebabkan player pindah ke status CLOSED.

Page 5: MGDW4 Online Camp #6b: Sound

Mobile Games Developer War 4: Online Camp

How to use MMAPI

Import package yang dibutuhkan

import javax.microedition.media.Manager;import javax.microedition.media.MediaException;import javax.microedition.media.Player;

Kode ini hanya ilustrasi, penerapan pada game lain harus disesuaikan dengan kode yang telah dibuat (misalnya nama path)

Page 6: MGDW4 Online Camp #6b: Sound

Mobile Games Developer War 4: Online Camp

How to use MMAPI

Siapkan variable untuk suara

InputStream media;Player ambil_kunci, buka_kunci, menang, tuas;

Kode ini hanya ilustrasi, penerapan pada game lain harus disesuaikan dengan kode yang telah dibuat (misalnya nama path)

Page 7: MGDW4 Online Camp #6b: Sound

Mobile Games Developer War 4: Online Camp

How to use MMAPI

Simpan file music pada folder /res

Pada folder /res, kita dapat membuat submenu agar pengelompokkan asset pun lebih teratur

Kode ini hanya ilustrasi, penerapan pada game lain harus disesuaikan dengan kode yang telah dibuat (misalnya nama path)

Page 8: MGDW4 Online Camp #6b: Sound

Mobile Games Developer War 4: Online Camp

How to use MMAPI

Inisialisasikan media ke file music

Lakukan prefetch() dan realize() pada tahap inisialisasi

public void init() { try { //Initialize sound fx media = getClass().getResourceAsStream("/sfx/ambil_kunci.wav"); ambil_kunci = Manager.createPlayer(media, "audio/X-wav");

media = getClass().getResourceAsStream("/sfx/buka_kunci.wav"); buka_kunci = Manager.createPlayer(media, "audio/X-wav");

media = getClass().getResourceAsStream("/sfx/switch.wav"); tuas = Manager.createPlayer(media, "audio/X-wav");

ambil_kunci.realize(); ambil_kunci.prefetch(); buka_kunci.realize(); buka_kunci.prefetch(); tuas.realize(); tuas.prefetch(); } catch (IOException e) { e.printStackTrace(); } catch (MediaException e) { e.printStackTrace(); }}

1

2

Kode ini hanya ilustrasi, penerapan pada game lain harus disesuaikan dengan kode yang telah dibuat (misalnya nama path)

Page 9: MGDW4 Online Camp #6b: Sound

Mobile Games Developer War 4: Online Camp

How to use MMAPI

Mainkan Player pada tempat yang diinginkan

if (obsLVL[posY-1][posX] == 7 || obsLVL[posY+1][posX] == 7 || obsLVL[posY][posX-1] == 7 || obsLVL[posY][posX+1] == 7) { if (invent != 0) { try { buka_kunci.start(); } catch (MediaException e) { e.printStackTrace(); } obsLVL[x][y] = 8; mapLVL[x][y] = 5; invent--; }}

if (!stateTuasSFX) { try { tuas.start(); } catch (MediaException e) { e.printStackTrace(); } stateTuasSFX = true;}

if (obsLVL[posY][posX] == 9) { invent++; try { ambil_kunci.start(); } catch (MediaException e) { e.printStackTrace(); } obsLVL[posY][posX] = 0;}

Ketika memanggil method start(), kita harus memasukkannya pada try – catch.

Note: kode disamping adalah contoh pemanggilan sfx ketika char mengambil kunci, membuka pintu, dan mengaktifkan tuas.Suara yang dihasilkan tidak melooping.

Kode ini hanya ilustrasi, penerapan pada game lain harus disesuaikan dengan kode yang telah dibuat (misalnya nama path)

Page 10: MGDW4 Online Camp #6b: Sound

Mobile Games Developer War 4: Online Camp

How to use MMAPI

Jangan lupa untuk menutup Player apabila sudah tidak digunakan kembali (optimalisasi)

ambil_kunci.deallocate();ambil_kunci.close();

Note: sebuah Player baru dapat di realize ketika Player tersebut sudah di deallocate dan close

Kode ini hanya ilustrasi, penerapan pada game lain harus disesuaikan dengan kode yang telah dibuat (misalnya nama path)

Page 11: MGDW4 Online Camp #6b: Sound

Mobile Games Developer War 4: Online Camp

How to control volume Player

Import package berikut

import javax.microedition.media.control.VolumeControl;

Lalu inisialisasikan VolumeControl, pada Player yang ingin dikendalikan suaranya (pada contoh ini, ambil_kunci)

VolumeControl vControl = (VolumeControl)ambil_kunci.getControl("VolumeControl");

Pada kode selanjutnya (atau pada inisialisasi), kita dapat mengendalikan volume dari Player tersebut (range 0 - 100)

vControl.setLevel(100);

Atau kita dapat membuat Player tersebut mute (true/false)

vControl.setMute(true);

Kode ini hanya ilustrasi, penerapan pada game lain harus disesuaikan dengan kode yang telah dibuat (misalnya nama path)

Page 12: MGDW4 Online Camp #6b: Sound

Mobile Games Developer War 4: Online Camp

• Untuk menyelesaikan materi, isi form di link ini: http://bit.ly/N3TNsU

• Untuk pertanyaan atau diskusi bisa dilakukan di forum: http://bit.ly/mgdw4forum