# aardio 范例: fsys.media 音频播放控制，显示播放进度



```aardio
//fsys.media
import win.ui;
import fonts.fontAwesome;
/*DSG{{*/
var winform = win.form(text="fsys.media 音频播放控制，显示播放进度";right=534;bottom=84)
winform.add(
btnPause={cls="plus";text="暂停";left=226;top=34;right=325;bottom=62;align="left";bgcolor=-5197169;disabled=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-16;name='FontAwesome');padding={left=14;top=2}};iconText='\uF04C';notify=1;textPadding={left=35};z=3};
btnPlay={cls="plus";text="播放";left=343;top=34;right=433;bottom=62;align="left";bgcolor=-5197169;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-16;name='FontAwesome');padding={left=14;top=2}};iconText='\uF04B';notify=1;textPadding={left=35};z=2};
progress={cls="plus";left=15;top=16;right=510;bottom=20;bgcolor=6447459;forecolor=9959653;notify=1;z=1}
)
/*}}*/

import fsys.dlg;
import fsys.media;

var mediaFile;
winform.btnPlay.oncommand = function(id,event){
	if(mediaFile) {
    	mediaFile.stop(); 
    	winform.progress.visible = false;
    }
    
	if(!winform.btnPlay.checked){
		return;
	}
	winform.btnPlay.checked = false;
	
    var path = fsys.dlg.open("*.mp3|*.mp3||");
    if(!path) return;

	mediaFile = fsys.media(path);
	if(mediaFile) {
		mediaFile.play(); 
		
		winform.btnPlay.checked = true;
		winform.btnPause.disabled = false;
		
		winform.progress.setProgressRange(0,mediaFile.length());
	 	winform.progress.progressPos = 0; 
	 	winform.progress.visible = true;
	}	
}

winform.btnPause.oncommand = function(id,event){
	if( mediaFile ){
		if(mediaFile.isPlaying()){
			mediaFile.pause();
		}
		else {
			mediaFile.resume();
		}
	} 
}

winform.setInterval( 
	function(){ 
		if( winform.btnPlay.checked && mediaFile){ 
			if( mediaFile.isPlaying()){
				winform.progress.progressPos = mediaFile.position();
			} 
			elseif( mediaFile.isStopped() ) {
				winform.progress.visible = false;
				winform.btnPlay.checked = false; 
				winform.btnPause.disabled = true;
			}
		} 
	},500
)

winform.btnPause.skin({
	background={
		default=0x668FB2B0;
		disabled=0xFFCCCCCC;
		hover=0xFF928BB3
	};
	color={
		default=0xFF000000;
		disabled=0xFF6D6D6D
	};
	checked = {
		iconText = '\uF04B';
		text = "继续";
		background={
			default=0x668FB2B0;
			disabled=0xFFCCCCCC;
			hover=0xFF928BB3
		};
		color={
			default=0xFF000000;
			disabled=0xFF6D6D6D
		};
	}
})

winform.btnPlay.skin({
	background={
		default=0x668FB2B0;
		disabled=0xFFCCCCCC;
		hover=0xFF928BB3
	};
	color={
		default=0xFF000000;
		disabled=0xFF6D6D6D
	};
	checked = {
		iconText = '\uF04D';
		text = "停止";
		background={
			default=0x668FB2B0;
			disabled=0xFFCCCCCC;
			hover=0xFF928BB3
		};
		color={
			default=0xFF000000;
			disabled=0xFF6D6D6D
		};
	}
})

winform.show();
win.loopMessage();
```

