AS3 音乐播放进度条

 1 package{ 
 2     //导入包 
 3     import flash.display.Sprite;
 4     import flash.events.Event;
 5     import flash.media.Sound;
 6     import flash.media.SoundChannel;
 7     import flash.net.URLRequest;
 8     import flash.text.TextField; 
 9     //创建文档类 
10     public class ABC1008 extends Sprite { 
11         //定义属性 
12         private var len:Number; 
13         private var po:Number; 
14         private var song:SoundChannel; 
15         private var sp1:Sprite 
16         private var sp2:Sprite 
17         private var txt:TextField 
18         //定义要加载的文件路径,注意,此路径要相对于SWF文件的目录 
19         private var url:String="zbc.mp3"; 
20         //创建Sound类实例 
21         private var mysound:Sound=new Sound(); 
22         //构造函数 
23         public function ABC1008() { 
24             //创建URL连接 
25             var request:URLRequest=new URLRequest(url); 
26             //注册加载完成事件 
27             mysound.addEventListener(Event.COMPLETE,completeHandler); 
28             //加载文件 
29             mysound.load(request); 
30             //创建一个背景显示对象 
31             sp1=new Sprite(); 
32             sp1.graphics.beginFill(0xff0000); 
33             sp1.graphics.drawRect(0,0,300,20); 
34             sp1.graphics.endFill(); 
35             addChild(sp1); 
36             sp1.x=50; 
37             sp1.y=100; 
38             //创建一个用于缩放的显示对象,通过缩放表示进度值 
39             sp2=new Sprite(); 
40             sp2.graphics.beginFill(0xffff00); 
41             sp2.graphics.drawRect(0,0,298,18); 
42             sp2.graphics.endFill(); 
43             addChild(sp2); 
44             sp2.x=51; 
45             sp2.y=101; 
46             //创建一个动态文本,用于在其中不断显示当前的进度 
47             txt=new TextField() 
48             txt.text="当前播放进度为:" 
49             txt.x=50 
50             txt.y=120 
51             txt.width=300 
52             addChild(txt) 
53         } 
54         //创建加载完成事件侦听函数 
55         private function completeHandler(event:Event):void { 
56             //加载完成,开始播放 
57             song=mysound.play(); 
58             //获取当前声音文件的长度 
59             len=mysound.length; 
60             //加入帧循环事件,逐帧计算播放进度 
61             addEventListener(Event.ENTER_FRAME,onenterframe); 
62         } 
63         //创建逐帧计算和显示进度事件处理函数 
64         private function onenterframe(evt:Event):void { 
65             //获取当前播放头所对应的音频文件长度 
66             po=song.position; 
67             //计算进度比值 
68             var per:Number=po/len; 
69             //缩放显示对象sp2,实现进度显示 
70             sp2.scaleX=per 
71             //计算进度百分比 
72             var percent:Number=Math.floor(per*10000)/100 
73             //文本显示进度 
74             txt.text="当前播放进度为:"+percent+"%" 
75         } 
76     } 
77 } 

 

posted @ 2018-10-08 13:45  饭桶大叔  阅读(405)  评论(0编辑  收藏  举报