播放器"/>
一个Flex做的Mp3播放器
在一个网站上找到了一个flex做播放器含进度条的和歌曲名称含源代码:
import flash.events.*;
import flash.URLRequest;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.events.TimerEvent;
private var soundURL:String = "song/b.mp3";
//访问 url 上的东西都用 URLRequest 了
private var request:URLRequest = new URLRequest(soundURL);
// 新建 Sound 对象 //声明 SoundChannel 类型的变量 my_channel
private var my_channel:SoundChannel; /
/新建 myTimer 对象并定义循环的时间间隔为10毫秒,循环次数为无限次(参数中的0表示无限次)
private var myTimer:Timer = new Timer(10, 0);
my_sound.load(request);
}
//播放音乐:
private function playSound(): void{
my_channel = my_sound.play();
// 音乐正式开始播放 //添加事件侦听器, 功能: 循环执行 timerHandler 函数(但这里还没有开始循环执行) myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
// 这里才开始循环执行 timerHandler 函数
} /
/停止音乐:
private function stopSound():void{
//停止对函数 timerHandler 的循环执行, 因为音乐开始时 myTimer 对象就对函数 timerHandler 循环执行了 myTimer.stop();
my_channel.stop();
// 正式停止音乐
// 使那"播放进度"条的值回到0,即回到最左端
//定义被 myTimer 循环执行的函数 timerHandler
//功能: 显示音乐的播放进度, 进度条会随着音乐的继续播放而向右缓缓移动;
//把这个公式翻译为中文: 播放进度条的值=当前音乐播放时间/音乐的总时间
progress_hs.value = my_channel.position/my_sound.length;
}
//改变播放进度: 每当 "播放进度" 条被用户拉动过而使其值改变时,就执行以下函数
/音乐停止且必须停止,是为了从新的播放时间点开始播放
//(感觉这里麻烦了点, 如果有更好的方法,恳请高手指点!请联系我: // www.Y-boy 或 www.RiaHome ,谢谢!)
//使音乐从新的时间点开始播放,新的时间点是小括号内的值,
//即:"播放进度"条的值*音乐的总时间, 为什么会这样呢?
//因为 HSlider 控件(那条"播放进度")的长度在下面被定义为1,
//使得"播放进度"条的值在闭区间[0,1]内, 所以只需再乘以音乐的总时间就行了
my_channel = my_sound.play(progress_hs.value*my_sound.length);
}
//改变音量: 每当 "音量大小" 控制条被用户拉动过而使其值改变时,就执行以下函数
private function changeVolume():void{
var my_transform:SoundTransform = my_channel.soundTransform;
my_transform.volume my_channel.soundTransform = my_transform;
}
//改变左右声道: 每当 "左右声道" 控制条被用户拉动过而使其值改变时,就执行以下函数
private function changePan():void{
//此处用法与上面的 改变音量 相同, 理解 改变音量 的, 就能理解这里
var my_transform:SoundTransform = my_channel.soundTransform;
my_transform.pan = pan_vs.value;
my_channel.soundTransform = my_transform;
}
]]>
</s:Application>
更多推荐
一个Flex做的Mp3播放器
发布评论