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
), 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).
![:D](file:///C:/Users/compaq/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif)
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:
01
|
import
flash.net.FileReferenceList;
|
|
02
|
|
03
|
var playlist:Array
= new Array(0);
|
|
04
|
var musik:Sound
= new Sound();
|
05
|
var angka:Number
= new Number(0);
|
|
06
|
var fileRefList:FileReferenceList
= new FileReferenceList();
|
07
|
var listenerFileRefList:Object
= new Object();
|
|
08
|
var listHandler:Object
= new Object();
|
09
|
|
|
10
|
fscommand("showmenu",
false);
|
11
|
kanan_btn.onPress =
kanan;
|
|
12
|
kiri_btn.onPress =
kiri;
|
13
|
browse_btn.onPress =
browseFile;
|
|
14
|
browse_btn.teks.text
= "load";
|
15
|
kiri_btn.teks.text =
"prev";
|
|
16
|
kanan_btn.teks.text
= "next";
|
17
|
fileRefList.addListener(listenerFileRefList);
|
|
18
|
cmp_playlist.addEventListener("change",
listHandler);
|
19
|
cmp_playlist.setStyle("fontFamily",
"corbel");
|
|
20
|
cmp_playlist.setStyle("fontSize",
"12");
|
21
|
tulisan_txt.text =
"load file MP3 terlebih dulu..\n (maaf, di versi cupu ini, file MP3nya
mesti sefolder sama aplikasinya)";
|
|
22
|
|
23
|
listHandler.change =
function(evt:Object){
|
|
24
|
if(angka
!= evt.target.selectedItem.data){
|
25
|
angka
= evt.target.selectedItem.data;
|
|
26
|
loadMusik();
|
27
|
}
|
|
28
|
}
|
29
|
|
|
30
|
musik.onSoundComplete
= function(){
|
31
|
kanan();
|
|
32
|
}
|
33
|
|
|
34
|
musik.onLoad =
function(success:Boolean){
|
35
|
if (success){
|
|
36
|
musik.start();
|
37
|
}
|
|
38
|
else{
|
39
|
tulisan_txt
= "salah load file";
|
|
40
|
}
|
41
|
}
|
|
42
|
|
43
|
listenerFileRefList.onSelect
= function(file:FileReferenceList){
|
|
44
|
for(var i
= 0; i < file.fileList.length; i++){
|
45
|
var filePilihan
= file.fileList[i].name;
|
|
46
|
if(filePilihan.substr(-3,
3) == "mp3"){
|
47
|
cmp_playlist.addItem({label:filePilihan,
data:playlist.length});
|
|
48
|
playlist.push(filePilihan);
|
49
|
}
|
|
50
|
}
|
51
|
loadMusik();
|
|
52
|
}
|
53
|
|
|
54
|
function browseFile(){
|
55
|
fileRefList.browse([{description:"Ingat:
file MP3 sefolder saja! (maklum versi cupu)",
extension:"*.mp3"}]);
|
|
56
|
}
|
57
|
|
|
58
|
function loadMusik(){
|
59
|
musik.loadSound(playlist[angka],
true);
|
|
60
|
}
|
61
|
|
|
62
|
function kanan(){
|
63
|
if(playlist.length
< 1){
|
|
64
|
tulisan_txt.text
= "load filenya dulu woi..\n(tombolnya di bawah playlist)";
|
65
|
}
|
|
66
|
else{
|
67
|
angka
+= 1;
|
|
68
|
if(angka
>= playlist.length){
|
69
|
angka
= 0;
|
|
70
|
}
|
71
|
loadMusik();
|
|
72
|
}
|
73
|
}
|
|
74
|
|
75
|
function kiri(){
|
|
76
|
if(playlist.length
< 1){
|
77
|
tulisan_txt.text
= "load filenya dulu woi..\n(tombolnya di bawah playlist)";
|
|
78
|
}
|
79
|
else{
|
|
80
|
angka
-= 1;
|
81
|
if(angka
<= 0) {
|
|
82
|
angka
= playlist.length - 1;
|
83
|
}
|
|
84
|
loadMusik();
|
85
|
}
|
|
86
|
}
|
87
|
|
|
88
|
this.onEnterFrame=function(){
|
89
|
var posisi:String
= musik.position.toString();
|
90
|
var durasi:String
= musik.duration.toString();
|
91
|
var artist:String
= musik.id3.artist.toString();
|
|
92
|
var judul:String
= musik.id3.songname.toString();
|
93
|
var menitPlaying:String
= Math.floor(posisi/60000) + ":"
+
Math.round((posisi/1000)%60);
|
94
|
var menitTotal:String
= Math.floor(durasi/60000) + ":"
+
Math.round((durasi/1000)%60);
|
95
|
|
|
96
|
if(playlist.length
>= 1){
|
97
|
tulisan_txt.text
= artist + " - " + judul + "\n" +
menitPlaying + " / "
+ menitTotal;
|
|
98
|
}
|
99
|
}
|
Preview
Mohon
maaf kalau kodenya terlihat tidak efisien, nampak buggy, dan sulit dibaca
algoritmanya acak-acakan
yang penting fungsional
dulu lah ya..
Tekan Ctrl+Enter untuk
melihat preview movie.
![:D](file:///C:/Users/compaq/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif)
![8)](file:///C:/Users/compaq/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif)
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..
Bagi
yang berminat untuk melihat contoh aplikasinya (.exe) sila unduh di http://www.box.net/shared/30010rjlmf
***
Referensi terkait:
·
http://flash-reference.icod.de/flash/net/FileReferenceList.html
·
http://flash-reference.icod.de/Sound.html
· Tips Trik Flash,
Tabloid PC-Mild Edisi 6/2010
Tidak ada komentar:
Posting Komentar