[AS3]AS3之处理音乐播放器的播放进度
使用Sound类的length属性获取当前音频的总长度;使用SoundChannel类的position属性获取播放头在当前音频的位置,也就是当前播放的长度;然后二者的比值就是当前播放进度值
此原理为:使用Sound类的length属性获取当前音频的总长度;使用SoundChannel类的position属性获取播放头在当前音频的位置,也就是当前播放的长度;然后二者的比值就是当前播放进度值。
下面上示例:(文档类如下)
- package com.lzxt{
- //导入包
- import flash.display.Sprite;
- import flash.events.*;
- import flash.media.Sound;
- import flash.media.SoundChannel;
- import flash.net.URLRequest;
- import flash.text.TextField
- //创建文档类
- public class SoundPro extends Sprite {
- //定义属性
- private var len:Number;
- private var po:Number;
- private var song:SoundChannel;
- private var sp1:Sprite
- private var sp2:Sprite
- private var txt:TextField
- //定义要加载的文件路径,注意,此路径要相对于SWF文件的目录
- private var url:String="献给爱丽丝.mp3";
- //创建Sound类实例
- private var mysound:Sound=new Sound();
- //构造函数
- public function SoundPro() {
- //创建URL连接
- var request:URLRequest=new URLRequest(url);
- //注册加载完成事件
- mysound.addEventListener(Event.COMPLETE,completeHandler);
- //加载文件
- mysound.load(request);
- //创建一个背景显示对象
- sp1=new Sprite();
- sp1.graphics.beginFill(0xff0000);
- sp1.graphics.drawRect(0,0,300,20);
- sp1.graphics.endFill();
- addChild(sp1);
- sp1.x=50;
- sp1.y=100;
- //创建一个用于缩放的显示对象,通过缩放表示进度值
- sp2=new Sprite();
- sp2.graphics.beginFill(0xffff00);
- sp2.graphics.drawRect(0,0,298,18);
- sp2.graphics.endFill();
- addChild(sp2);
- sp2.x=51;
- sp2.y=101;
- //创建一个动态文本,用于在其中不断显示当前的进度
- txt=new TextField()
- txt.text="当前播放进度为:"
- txt.x=50
- txt.y=120
- txt.width=300
- addChild(txt)
- }
- //创建加载完成事件侦听函数
- private function completeHandler(event:Event):void {
- //加载完成,开始播放
- song=mysound.play();
- //获取当前声音文件的长度
- len=mysound.length;
- //加入帧循环事件,逐帧计算播放进度
- addEventListener(Event.ENTER_FRAME,onenterframe);
- }
- //创建逐帧计算和显示进度事件处理函数
- private function onenterframe(evt:Event):void {
- //获取当前播放头所对应的音频文件长度
- po=song.position;
- //计算进度比值
- var per=po/len;
- //缩放显示对象sp2,实现进度显示
- sp2.scaleX=per
- //计算进度百分比
- var percent=Math.floor(per*10000)/100
- //文本显示进度
- txt.text="当前播放进度为:"+percent+"%"
- }
- }
- }
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...