3

Sabtu, 07 Mei 2011

0 Buat Aplikasi MP3 Player Sederhana dengan Flash+AS2


Memanfaatkan kemampuan Flash yang dapat memainkan file MP3 dengan cara membuat Sound object (di AS2, 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;
        }
}
Preview
Mohon maaf kalau kodenya terlihat tidak efisien, nampak buggy, dan sulit dibaca algoritmanya acak-acakan :Dyang penting fungsional dulu lah ya.. 8)Tekan Ctrl+Enter untuk melihat preview movie.
Namun ada keterbatasan yang cukup mengganggu dari aplikasi yang saya buat 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..

0 komentar:

Posting Komentar

You can replace this text by going to "Layout" and then "Page Elements" section. Edit " About "