请教ActionScript3 中播放外部声音的问题
请教各位大侠们,我是一个AS3的新手,最近我在学习声音播放的相关技术,在网上,大部分的实例是演示播放本地媒体或者是等音频全部下载完毕再播放,我想做一个带缓冲的播放器,就是音频文件一边下载一边播放,如果网络不好,播放到某位置会停下来等待一会,等缓冲一部分后再继续播放。请问各位大侠应该怎么做?
我只知道Sound类和SoundChannel类。请各位给小弟简单的例子吧,我如何获得当前音频下载了多少?如何知道当前音乐播放到什么位置?谢谢各位了!
[解决办法]
如果单纯播放MP3等音频文件很简单。如果想做直播或聊天室就麻烦了。
给你写了一个,没加注解,很晚了,呵呵。
需要注意的是本地是无法测试的,你需要上传到网站上测试。安全沙箱也需要注意。既然搞网络程序,这个我不多说了。
打完收工,睡觉去了。
import flash.net.URLRequest;import flash.media.Sound;import flash.media.SoundChannel;import flash.events.MouseEvent;import flash.events.ProgressEvent;import flash.media.SoundLoaderContext;import flash.display.Sprite;import flash.text.TextField;var btn:Sprite = new Sprite();btn.graphics.beginFill(0xff0000);btn.graphics.drawRect(10,10,50,50);btn.buttonMode = true;addChild(btn);var txt:TextField = new TextField();addChild(txt);txt.border = true;txt.height = 20;txt.x = 10;txt.y = 100;var mylo:URLRequest = new URLRequest("and.mp3");var my:Sound = new Sound();var myc:SoundChannel = new SoundChannel();var ss:SoundLoaderContext = new SoundLoaderContext(5000);my.load(mylo,ss);my.addEventListener(ProgressEvent.PROGRESS,mymy);function mymy(evt:ProgressEvent){ var loadNum:Number = evt.bytesTotal; txt.text = String(Math.round(evt.bytesLoaded / loadNum * 100))+"%";}btn.addEventListener(MouseEvent.CLICK,myevt);function myevt(evt:MouseEvent){ myc = my.play();}
[解决办法]
sound.load()之后
sound.bytesLoaded取得当前加载的长度(字节)
sound.bytesTotal取得是歌曲的总长度(字节)
soundChannel=sound.play()之后
soundChannel.posotion取得当前的播放位置