利用组件做的音乐播放器:(文件里有swf文件…不过歌曲需要匹配……)
import flash.media.Sound;import flash.net.URLRequest;import flash.events.*;import flash.events.MouseEvent;import flash.media.SoundChannel;import fl.controls.*;import flash.media.SoundTransform;import fl.events.SliderEvent;import fl.data.*;import fl.events.*;import flash.display.Bitmap;import flash.media.SoundMixer;import flash.utils.ByteArray;import flash.display.Sprite;import flash.text.TextFormat;import fl.managers.StyleManager;[Embed(source = "1.jpg")]var img1:Class;[Embed(source = "2.jpg")]var img2:Class;[Embed(source = "3.jpg")]var img3:Class;[Embed(source = "4.jpg")]var img4:Class;[Embed(source = "5.jpg")]var img5:Class;[Embed(source = "6.jpg")]var img6:Class;[Embed(source = "7.jpg")]var img7:Class;[Embed(source = "8.jpg")]var img8:Class;var txtf:TextFormat = new TextFormat("宋体",13,0x325468);var yinbo:SoundMixer = new SoundMixer();var yinarr:ByteArray = new ByteArray();var mm:Number;var sp:Sprite = new Sprite(); var sound:Sound;var channel:SoundChannel = new SoundChannel();var sheng:SoundTransform = new SoundTransform();var bit:Bitmap;var bl:Number = 0;var bl2:Number = 0;var bl3:Number = 0;var ca:int = 0;var arr:Array = ["愿望.mp3","九公主.mp3","逃学书童.mp3","承认.mp3","没有什么不同.mp3","蝴蝶.mp3","多余的解释.mp3","第一首情歌.mp3"];var dp:DataProvider = new DataProvider();dp.addItem({ri:img1,label:arr[0]});dp.addItem({ri:img2,label:arr[1]});dp.addItem({ri:img3,label:arr[2]});dp.addItem({ri:img4,label:arr[3]});dp.addItem({ri:img5,label:arr[4]});dp.addItem({ri:img6,label:arr[5]});dp.addItem({ri:img7,label:arr[6]});dp.addItem({ri:img8,label:arr[7]});lieBaioList.dataProvider = dp;lieBaioList.sourceField = "ri";lieBaioList.height = 400;lieBaioList.rowHeight = 100;lieBaioList.columnWidth = 100;lieBaioList.direction = ScrollBarDirection.VERTICAL;lieBaioList.columnCount = 1;xianshiLabel.text = arr[ca];shangbtn.label = "《&";xiabtn.label = "》&";okbtn.label = ">>…";shengYin.tickInterval = 10;shengYin.maximum = 100;shengYin.value = 30;sheng.volume = shengYin.value * 0.01;channel.soundTransform = sheng;jindu.tickInterval = 10;jindu.maximum = 100;jindu.value = 0;StyleManager.setStyle("textFormat",txtf);this.addEventListener(Event.ENTER_FRAME,onyinbohandler);lieBaioList.addEventListener(ListEvent.ITEM_CLICK,onmyListClick);okbtn.addEventListener(MouseEvent.CLICK,onokBtn);shangbtn.addEventListener(MouseEvent.CLICK,onshangBtn);xiabtn.addEventListener(MouseEvent.CLICK,onxiaBtn);shengYin.addEventListener(SliderEvent.THUMB_DRAG,ontiaoShengYin);huantu();function huantu():void{ if (ca ==0) { bit = new img1(); } if (ca ==1) { bit = new img2(); } if (ca ==2) { bit = new img3(); } if (ca ==3) { bit = new img4(); } if (ca ==4) { bit = new img5(); } if (ca ==5) { bit = new img6(); } if (ca ==6) { bit = new img7(); } if (ca ==7) { bit = new img8(); } addChild(bit); bit.x = 10; bit.y = 10; bit.height = 150; bit.width = 220;}function onyinbohandler(e:Event):void{ mm = 0; sp.graphics.clear(); //在舞台绘制,清空舞台绘制内容(因为音频频谱是随着时间的改变而不断变化的); SoundMixer.computeSpectrum(yinarr,true,0); //把音频数据化存入数组中.computeSpectrum(字节数组,模式,伸展因子); for (var i=0; i<1100; i+=19) { mm = yinarr.readFloat();//把字节数组转化为32位单精度浮点数 var num:Number = mm * 180;//把字节数组放大 sp.graphics.lineStyle(2,0x131119,100); //笔触 颜色 透明度Math.random() * 0xffffff + 0x000000; //绘制图形的公式 sp.graphics.moveTo(10+i/7,320); sp.graphics.lineTo(10+i/7,320-num/4); addChild(sp); }}function onkas(e:Event):void{ //trace(channel.position); //trace(sound.length); if (channel.position < sound.length) { stage.addEventListener(Event.ENTER_FRAME,onjiduHandler); }}function onjiduHandler(e:Event):void{ bl2 = channel.position / sound.length * 100; jindu.value = bl2; jindu.addEventListener(SliderEvent.THUMB_DRAG,onJinDu); if (bl2>=99) { trace(11111); lieBaioList.scrollToIndex(ca); ca++; okbtn.label = "||…"; if (ca>7) { ca = 0; } if (okbtn.label == "||…") { okbtn.label = "||…"; channel.stop(); sound = new Sound(); sound.load(new URLRequest(arr[ca])); channel = sound.play(bl); } else { bl = channel.position; channel.stop(); okbtn.label = ">>…"; } xianshiLabel.text = arr[ca]; huantu(); }}function onJinDu(e:SliderEvent):void{ bl3 = jindu.value / 100 * sound.length; channel.stop(); channel = sound.play(bl3);}function onokBtn(e:MouseEvent):void{ if (okbtn.label == ">>…") { sound = new Sound(); sound.load(new URLRequest(arr[ca])); sound.addEventListener(Event.COMPLETE,onkas); channel = sound.play(bl); okbtn.label = "||…"; lieBaioList.scrollToIndex(ca); } else { stage.removeEventListener(Event.ENTER_FRAME,onjiduHandler); bl = channel.position; channel.stop(); okbtn.label = ">>…"; lieBaioList.scrollToIndex(ca); } xianshiLabel.text = arr[ca];}function onshangBtn(e:MouseEvent):void{ bl3 = 0; ca--; //okbtn.label = "||…"; if (ca<0) { ca = 7; } if (okbtn.label == "||…") { bl = 0; okbtn.label = "||…"; channel.stop(); sound = new Sound(); sound.load(new URLRequest(arr[ca])); channel = sound.play(bl); } else { bl = channel.position; channel.stop(); okbtn.label = ">>…"; } xianshiLabel.text = arr[ca]; lieBaioList.scrollToIndex(ca); huantu();}function onxiaBtn(e:MouseEvent):void{ bl3 = 0; ca++; //okbtn.label = "||…"; if (ca>7) { ca = 0; } if (okbtn.label == "||…") { bl = 0; okbtn.label = "||…"; channel.stop(); sound = new Sound(); sound.load(new URLRequest(arr[ca])); channel = sound.play(bl); } else { bl = channel.position; channel.stop(); okbtn.label = ">>…"; } xianshiLabel.text = arr[ca]; lieBaioList.scrollToIndex(ca); huantu();}function ontiaoShengYin(e:SliderEvent):void{ sheng.volume = (shengYin.value)*0.01; trace(shengYin.value); channel.soundTransform = sheng;}function onmyListClick(e:ListEvent):void{ ca =(lieBaioList.selectedIndex)+1; var bit:Bitmap = new e.item.ri(); addChild(bit); bit.x = 10; bit.y = 10; bit.height = 150; bit.width = 220; channel.stop(); sound = new Sound(); sound.load(new URLRequest(e.item.label)); channel = sound.play(bl); okbtn.label = "||…"; xianshiLabel.text = e.item.label;}
posted on 2012-10-29 21:07 阅读( ...) 评论( ...)