Download - MGDW4 Online Camp #6b: Sound
Mobile Games Developer War 4: Online Camp
MGDW4 Online Camp #6b
Sound FX
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
Mobile Games Developer War 4: Online Camp
MMAPI
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.
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)
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)
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)
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)
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)
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)
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)
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