最新【FLASH控制动画声音的停止和播放】动画.doc
最新【FLASH控制动画声音的停止和播放】动画今天有闪友问到如何控制AS3中的声音问题,用下面的小实例说明:/*As3Sound.as*/package import flash.display.Sprite;import flash.events.*;import flash.media.Sound;import flash.media.SoundChannel;import .URLRequest;import flash.utils.Timer;import flash.text.TextField;import flash.text.TextFieldAutoSize;import flash.filters.DropShadowFilter;public class As3Sound extends Sprite private var url:String = "http:/XXX.com/music/XXX.mp3"private var soundFactory:Sound;private var channel:SoundChannel;private var positionTimer:Timer;private var play_btn:Sprite;private var stop_btn:Sprite;private var d_filtersropShadowFilter=new DropShadowFilter(5,45,0x000000,80,8,8);/用于记录音乐现在是否为暂停状态private var bSoundStop:Boolean = false;public function As3Sound() var sxl_txt:TextField = new TextField();sxl_txt.text="CS4中如何控制声音的播放或停止的"sxl_txt.autoSize=TextFieldAutoSize.LEFT;sxl_txt.x=stage.stageWidth/2-sxl_txt.width/2;sxl_txt.y=20;addChild(sxl_txt);var mp3_request:URLRequest = new URLRequest(url);soundFactory = new Sound();/成功加载数据后soundFactory.addEventListener(Event.COMPLETE, completeHandler);/在存在可用于 MP3 声音的 ID3 数据时soundFactory.addEventListener(Event.ID3, id3Handler);/加载音乐错误时soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);/音乐加载中.soundFactory.addEventListener(ProgressEvent.PROGRESS, progressHandler);soundFactory.load(mp3_request);channel = soundFactory.play();/音乐播放完成channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);/用Timer监听音乐的播放进度positionTimer = new Timer(1000);positionTimer.addEventListener(TimerEvent.TIMER, positionTimerHandler);positionTimer.start();/创建一个按钮,用于播放音乐play_btn = new Sprite();play_btn.graphics.beginFill(0xFFCC32);play_btn.graphics.drawRoundRect(0, 0, 70, 18, 10, 10);play_btn.graphics.endFill();var play_txt:TextField = new TextField();play_txt.text = "播放"play_txt.x=18;play_btn.x=50;play_btn.y=100;play_txt.selectable = false;play_btn.addChild(play_txt);play_btn.filters=d_filters;play_btn.addEventListener(MouseEvent.CLICK, soundPlay);addChild(play_btn);/创建一个按钮,用于停止音乐stop_btn = new Sprite();stop_btn.graphics.beginFill(0xFFCC32);stop_btn.graphics.drawRoundRect(0, 0, 70, 18, 10, 10);stop_btn.graphics.endFill();stop_btn.x=130;stop_btn.y=100;var stop_txt:TextField = new TextField();stop_txt.x=18;stop_txt.text = "暂停"stop_txt.selectable = false;stop_btn.addChild(stop_txt);stop_btn.filters=d_filters;stop_btn.addEventListener(MouseEvent.CLICK, soundStop);addChild(stop_btn);/监听音乐的播放进度private function positionTimerHandler(event:TimerEvent):void var ybf:int = channel.position.toFixed(0);var zcd:int = soundFactory.length;var bfs:int = Math.floor(ybf/zcd*100);/trace("音乐总长度:"+zcd, "音乐已播放:"+ybf, "播放进度为:"+bfs+"%");/加载音乐完成时private function completeHandler(event:Event):void /trace("加载音乐完成: " + event);/在存在可用于MP3声音的ID3数据时private function id3Handler(event:Event):void /trace("音乐的ID3信息如下:");for (var s in soundFactory.id3) /trace(" ", s, ":", soundFactory.id3s);/trace("关于ID3信息介绍,请参见Sound类->属性->id3");/加载音乐错误时private function ioErrorHandler(event:Event):void /trace("加载音乐错误,错误信息如下:" + event);positionTimer.stop();/加载音乐时private function progressHandler(eventrogressEvent):void var yjz:int = event.bytesLoaded;var zcd:int = event.bytesTotal;var bfs:int = Math.floor(yjz/zcd*100);/trace("音乐总长度:"+zcd,"已加载: "+yjz, "加载进度为:"+bfs+"%");/音乐播放完成private function soundCompleteHandler(event:Event):void /trace("音乐播放完成: " + event);positionTimer.stop();/点击播放按钮事件private function soundPlay(event:MouseEvent):void if (bSoundStop) bSoundStop = false;channel = soundFactory.play(channel.position.toFixed(0);/点击停止按钮事件private function soundStop(event:MouseEvent):void if (!bSoundStop) bSoundStop = true;channel.stop();第 5 页 共 5 页