Membuat Aplikasi MP3 Player Sederhana dengan Flash + Action Script 2.0

          Memanfaatkan kemampuan Flash yang dapat memainkan file MP3 dengan cara membuat Sound object (di Action Script 2.0, favoritku ;p), saya pernah iseng2 membuat versi cupu dari aplikasi MP3 player.. BTW, tau Winamp kan? nah aplikasi semacam ini yang saya istilahkan sebagai MP3 player (versi kerennya sih :D ), yah.. meskipun yang pernah saya buat tersebut hasilnya masih berupa fitur-fitur dasar sederhana: load file-file MP3, next track, previous track, tampilan informasi MP3nya, dan tampilan playlist (supaya user bisa memilih file MP3 yang ingin dimainkan dengan mengkliknya di playlist).

          Cara buatnya, Flash dibuat memanjang ke bawah (biar rada mirip Winamp), simpan 3 buah movieclip yang sama (dimana di dalamnya terdapat sebuah dynamic text dengan instance name “teks“) namun diberikan instance name berbeda yaitu “browse_btn“, “kanan_btn“, dan “kiri_btn” (ketiganya akan berperan sebagai tombol untuk load files, play next track, dan play previous track). Sebuah dynamic text dengan instance name “tulisan_txt” (yang akan menampilkan nama artist, judul, dan ukuran waktu MP3 berjalan dimana informasi ini diambil dari ID3 tags MP3nya). Di bawahnya lagi sebagai tampilan playlist digunakan sebuah List Component dengan instance name “cmp_playlist“. Menyusul kemudian, baris ActionScriptnya disimpan di frame:

import flash.net.FileReferenceList;

var playlist:Array = new Array(0);
var musik:Sound = new Sound();
var angka:Number = new Number(0);
var fileRefList:FileReferenceList = new FileReferenceList();
var listenerFileRefList:Object = new Object();
var listHandler:Object = new Object();

fscommand(“showmenu”, false);
kanan_btn.onPress = kanan;
kiri_btn.onPress = kiri;
browse_btn.onPress = browseFile;
browse_btn.teks.text = “load”;
kiri_btn.teks.text = “prev”;
kanan_btn.teks.text = “next”;
fileRefList.addListener(listenerFileRefList);
cmp_playlist.addEventListener(“change”, listHandler);
cmp_playlist.setStyle(“fontFamily”, “corbel”);
cmp_playlist.setStyle(“fontSize”, “12”);
tulisan_txt.text = “load file MP3 terlebih dulu..\n (maaf, di versi cupu ini, file MP3nya mesti sefolder sama aplikasinya)”;

listHandler.change = function(evt:Object){
    if(angka != evt.target.selectedItem.data){
        angka = evt.target.selectedItem.data;
        loadMusik();
    }
}

musik.onSoundComplete = function(){
    kanan();
}

musik.onLoad = function(success:Boolean){
    if (success){
        musik.start();
    }
    else{
        tulisan_txt = “salah load file”;
    }
}

listenerFileRefList.onSelect = function(file:FileReferenceList){
    for(var i = 0; i < file.fileList.length; i++){
        var filePilihan = file.fileList[i].name;
        if(filePilihan.substr(-3, 3) == “mp3″){
            cmp_playlist.addItem({label:filePilihan, data:playlist.length});
            playlist.push(filePilihan);
        }
    }
    loadMusik();
}

function browseFile(){
    fileRefList.browse([{description:”Ingat: file MP3 sefolder saja! (maklum versi cupu)”, extension:”*.mp3″}]);
}

function loadMusik(){
    musik.loadSound(playlist[angka], true);
}

function kanan(){
    if(playlist.length < 1){
        tulisan_txt.text = “load filenya dulu woi..\n(tombolnya di bawah playlist)”;
    }
    else{
        angka += 1;
        if(angka >= playlist.length){
            angka = 0;
        }
        loadMusik();
    }
}

function kiri(){
    if(playlist.length < 1){
        tulisan_txt.text = “load filenya dulu woi..\n(tombolnya di bawah playlist)”;
    }
    else{
        angka -= 1;
        if(angka <= 0)    {
            angka = playlist.length – 1;
        }
        loadMusik();
    }
}

this.onEnterFrame=function(){
    var posisi:String = musik.position.toString();
    var durasi:String = musik.duration.toString();
    var artist:String = musik.id3.artist.toString();
    var judul:String = musik.id3.songname.toString();
    var menitPlaying:String = Math.floor(posisi/60000) + “:” + Math.round((posisi/1000)%60);
    var menitTotal:String = Math.floor(durasi/60000) + “:” + Math.round((durasi/1000)%60);

    if(playlist.length >= 1){
        tulisan_txt.text = artist + ” – ” + judul + “\n” + menitPlaying + ” / ” + menitTotal;
    }
}

          Mohon maaf kalau kodenya terlihat tidak efisien, nampak buggy, dan sulit dibaca algoritmanya acak-acakan :D yang penting fungsional dulu lah ya.. 8) Tekan Ctrl+Enter untuk melihat preview movie.

Namun ada keterbatasan yang cukup mengganggu dari aplikasi ini, yaitu:

Cuman bisa menjalankan file MP3 yang sefolder dengan SWF-nya, klo gak: undefined -__-’

Zzzzz.. Mungkin saya salah cara ngakses file dari objek FileReferenceList? atau sistem sandbox objek Sound yang tidak memperbolehkan loadSound diluar direktori?.. Anybody knows how can I play MP3 files that’s stored anywhere, so it could be like a real MP3 player? please share… Any improvement welcome..

Bagi yang berminat untuk melihat contoh aplikasinya (.exe) silahkan unduh di http://www.box.net/shared/30010rjlmf

***

Referensi terkait:

About these ads

Posted on 3 Juni, 2011, in Animasi. Bookmark the permalink. Tinggalkan komentar.

Berikan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Logout / Ubah )

Twitter picture

You are commenting using your Twitter account. Logout / Ubah )

Facebook photo

You are commenting using your Facebook account. Logout / Ubah )

Google+ photo

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Ikuti

Get every new post delivered to your Inbox.

%d blogger menyukai ini: