mp3 播放

// 方案一<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="myInit()"><mx:Script><![CDATA[import flash.events.*;import flash.net.URLRequest;import flash.media.Sound;import flash.media.SoundChannel;import flash.media.SoundTransform;import flash.utils.Timer;import flash.events.TimerEvent;import mx.controls.Alert;//mp3 的 url 地址private var soundURL:String = "asflex.mp3";//访问 url 上的东西都用 URLRequest 了private var request:URLRequest = new URLRequest(soundURL);private var my_sound:Sound=new Sound(); // 新建 Sound 对象//声明 SoundChannel 类型的变量 my_channelprivate var my_channel:SoundChannel;//新建 myTimer 对象并定义循环的时间间隔为10毫秒,循环次数为无限次(参数中的0表示无限次)private var myTimer:Timer = new Timer(10, 0);private function myInit():void{my_sound.load(request); // 载入外部 mp3: She is my sin.mp3}//播放音乐:private function playSound(): void{Alert.show(my_sound.length.toString());my_channel = my_sound.play(); // 音乐正式开始播放//添加事件侦听器, 功能: 循环执行 timerHandler 函数(但这里还没有开始循环执行)myTimer.addEventListener(TimerEvent.TIMER, timerHandler);myTimer.start(); // 这里才开始循环执行 timerHandler 函数}//停止音乐:private function stopSound():void{//停止对函数 timerHandler 的循环执行, 因为音乐开始时 myTimer 对象就对函数 timerHandler 循环执行了myTimer.stop();my_channel.stop(); // 正式停止音乐progress_hs.value = 0; // 使那"播放进度"条的值回到0,即回到最左端}//定义被 myTimer 循环执行的函数 timerHandlerprivate function timerHandler(event:TimerEvent):void{//功能: 显示音乐的播放进度, 进度条会随着音乐的继续播放而向右缓缓移动;//把这个公式翻译为中文: 播放进度条的值=当前音乐播放时间/音乐的总时间progress_hs.value = my_channel.position/my_sound.length;}//改变播放进度: 每当 "播放进度" 条被用户拉动过而使其值改变时,就执行以下函数private function changeProgress():void{//音乐停止且必须停止,是为了从新的播放时间点开始播放//(感觉这里麻烦了点, 如果有更好的方法,恳请高手指点!请联系我:// www.Y-boy.cn 或 www.RiaHome.cn ,谢谢!)my_channel.stop();//使音乐从新的时间点开始播放,新的时间点是小括号内的值,//即:"播放进度"条的值*音乐的总时间, 为什么会这样呢?//因为 HSlider 控件(那条"播放进度")的长度在下面被定义为1,//使得"播放进度"条的值在闭区间[0,1]内, 所以只需再乘以音乐的总时间就行了my_channel = my_sound.play(progress_hs.value*my_sound.length);}//改变音量: 每当 "音量大小" 控制条被用户拉动过而使其值改变时,就执行以下函数private function changeVolume():void{//把 my_channel.soundTransform 赋值给 my_transformvar my_transform:SoundTransform = my_channel.soundTransform;my_transform.volume = volume_hs.value; // 把"音量大小"控制条当前值赋给 my_transform.volumemy_channel.soundTransform = my_transform; // 给 my_channel.soundTransform 赋值/*这里的用法很特别, 像使用 AS2.0 里面的滤镜(Filters)那样, 先创建一个 "第三者",对 "第三者" 进行操作, 最后才把 "第三者" 赋值给 "当事人" . AS2.0 里面的滤镜的 "第三者"是数组, 这里的 "第三者" 是 my_transform . 这里不能跟 AS2.0 里面的滤镜相比, 只不过为了方便理解, 才这么说. (个人见解, 如有错请指出!)*/}//改变左右声道: 每当 "左右声道" 控制条被用户拉动过而使其值改变时,就执行以下函数private function changePan():void{//此处用法与上面的 改变音量 相同, 理解 改变音量 的, 就能理解这里var my_transform:SoundTransform = my_channel.soundTransform;my_transform.pan = pan_vs.value;my_channel.soundTransform = my_transform;} ]]></mx:Script><!-- 显示歌曲名称 --><mx:Label text="歌曲:She is my sin" fontSize="12"/><!-- 播放进度条 --><mx:Label text="播放进度:" fontSize="12" y="25"/><mx:HSlider id="progress_hs" width="100" minimum="0" maximum="1"x="60" y="25" mouseDown="myTimer.stop()" mouseUp="myTimer.start()"change="changeProgress()"/><!-- 音量控制条 --><mx:Label text="音量大小:" fontSize="12" y="52"/><mx:HSlider id="volume_hs" width="100" minimum="0" maximum="1"y="52" x="60" value="0.8" change="changeVolume()"/><!-- 左右声道控制条 --><mx:Label text="左右声道:" fontSize="12" x="-1" y="78"/><mx:HSlider id="pan_vs" width="100" minimum="-1" maximum="1"x="60" y="80" value="0" change="changePan()"/><!-- 播放和停止按钮 --><mx:Button label="play" y="116" x="50" click="playSound()"/><mx:Button label="stop" y="116" x="109" click="stopSound()"/>
</mx:Application>
// 方案二<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="OnClick()"><mx:Script><![CDATA[import flash.media.*;import mx.events.SliderEvent ;private var _type:int=2;private var _sound:Sound;private var _channel:SoundChannel;private var posNum:Number=0;private var _spectrumGraph:BitmapData = new BitmapData(256, 60,true,0x000000aa);//暂停private function OnPauseClick():void{posNum=_channel.position;_channel.stop();}//停止private function OnStopClick():void{posNum=0;_channel.stop();}private function OnClick():void{hsldLeft.value=1;//var  spe:Spectrum=new Spectrum();// Create bitmap for spectrum display// pnlFrame.addEventListener(Event.ENTER_FRAME, onEnterFrame);_sound = new Sound(new URLRequest("assets/song.mp3"));_channel = _sound.play( posNum );}//输出图形public function onEnterFrame():void{// Create the byte array and fill it with datavar spectrum:ByteArray = new ByteArray(  );SoundMixer.computeSpectrum(spectrum);// Clear the bitmap_spectrumGraph.fillRect(_spectrumGraph.rect,0x00000000);// Create the left channel visualizationvar i:int;if(2==_type){for(i=0;i<256;i++) {_spectrumGraph.setPixel32(i,35 + spectrum.readFloat(  ) * 20,0xffffffff);}}if(1==_type){for(i=0;i<64;i++) {_spectrumGraph.fillRect(new Rectangle(4*i,50-spectrum.readFloat(  ) * 50 ,4,spectrum.readFloat(  ) * 50 ),0xffffffff);}}cns.graphics.beginBitmapFill(_spectrumGraph);cns.graphics.drawRect(0,0,256,60);cns.graphics.endFill();   var curPos:Number=_channel.position;var curLen:Number=_sound.length;cns.graphics.beginFill(0x0);cns.graphics.drawRect(0,80,256,10);cns.graphics.endFill();cns.graphics.beginFill(0xa0);cns.graphics.drawRect(0,80,256*curPos/curLen,10);cns.graphics.endFill();}//改变输出图形的private function OnCnsClick():void{_type--;if (0>=_type){_type=2;}}//改变声音大小private function OnChangeVolumn( ):void{var transform:SoundTransform = _channel.soundTransform ;transform.volume =hsldLeft.value;_channel.soundTransform = transform;  trace("_channel.leftPeak="+_channel.leftPeak*100 +"   "+ "_channel.rightPeak="+_channel.rightPeak*100+"_channel.soundTransform.volume"+_channel.soundTransform.volume*100);   }]]></mx:Script><mx:Canvas x="0" y="0" width="256" height="84" id="cns" enterFrame="onEnterFrame()" click="OnCnsClick()"></mx:Canvas><mx:Button x="0" y="92" label="start" click="OnClick()"/><mx:Button x="196" y="92" label="stop" click="OnStopClick()"/><mx:Button x="96" y="92" label="pause" click="OnPauseClick()"/><mx:HSlider x="10" y="122" height="12" width="237" minimum="0" maximum="2" id="hsldLeft"   change="OnChangeVolumn()" liveDragging="true"/></mx:Application>

Flex mp3播放相关推荐

  1. FLex 编写网页MP3播放器

    FLex 编写网页MP3播放器 随着互联网的快速发展,HTML5显得越来越强势,个人认为,在短时间内Flex还是具有先天独厚的优势,就比如写个网页播放器,几行代码就可以搞定.现在给大家分享一下源码,可 ...

  2. ExtPlayer-Adobe AIR ExtJS 共同开发的MP3 播放器

    November 24, 2008 by Aaron Conran 事实上,我们一直在关注 Adobe AIR,而且在后来的与 Adobe 的合作促使下,我们对 Ext.air 包的进行了若干功能的加 ...

  3. java mp3播放器 无界面

    一.服务器端: 最近没有系统学习的计划,看了开源的YOYOPlayer(一个相当强大的播放器软件,基于java编写),心里痒痒,比较肤浅的学习下javasound. javasound是比较小巧的底层 ...

  4. java mp3播放器 ×××面

    一.服务器端: 最近没有系统学习的计划,看了开源的YOYOPlayer(一个相当强大的播放器软件,基于java编写),心里痒痒,比较肤浅的学习下javasound. javasound是比较小巧的底层 ...

  5. 安卓MP3播放器开发实例(1)之音乐列表界面

    学习安卓开发有一年了,想想这一年的努力,确实也收获了不少.也找到了比較如意的工作. 今天准备分享一个以前在初学阶段练习的一个项目.通过这个项目我真正的找到了开发安卓软件的感觉,从此逐渐步入安卓开发的正 ...

  6. java mp3 暂停,Java MP3播放器 - 使用jLayer播放,暂停和搜索不能正常工作

    我正在尝试在java中实现mp3播放器,它将从字节数组中播放音频 . 该类应该像这样工作: 加载用aes加密的mp3文件 将其解密为bytes / inputstream数组 播放变量中的音乐 让用户 ...

  7. 安卓MP3播放器开发实例(3)之进度条和歌词更新的实现

    上一次谈了音乐播放的实现,这次说下最复杂的进度条和歌词更新.因为须要在播放的Activity和播放的Service间进行交互,所以就涉及了Activity对Service的绑定以及绑定后数据的传输,这 ...

  8. java h5在线音频_用h5 audio播放mp3 播放一分钟就报错了

    使用的时候 下载的是mp3 播放 用的是audio ```java @At({"/", "/?"}) @Ok("raw") @Fail(&q ...

  9. 我的Android进阶之旅------Android MediaPlayer播放网络音频的实例--网络mp3播放器

    上一篇写了个简单的MP3播放器 ,这次写一个可以播放网络音频资源的播放器 本实例可以实现音乐播放器除了来电的时候会暂停播放,通话结束后恢复播放外,打开其他的Activity都可以继续播放音乐,享受一边 ...

最新文章

  1. App 运营的指标具体都有哪些?(二)
  2. 《现代操作系统(原书第3版)》pdf
  3. Python中使用cutecharts实现简单的手绘风格的图表
  4. 如何从机器学习数据中获取更多收益 1
  5. mysql truncate table命令使用总结
  6. Django的Modelforms的介绍
  7. 人工智能——框架表示法
  8. hadoop-集群安装
  9. vue生命周期心得体会800字
  10. matlab稳定性实验分析,实验 控制系统稳定性分析的MATLAB实现
  11. [从头读历史] 第267节 诗经 邶风
  12. 如何登入MySQL数据库
  13. k3 审核流程图_K3单据使用解释及流程图明细
  14. 《实战网络营销 网络推广经典案例战术解》扫描版[PDF]
  15. 城市路(信息学奥赛一本通 - T1381)
  16. nexus学习 五、搭建阿里云代理
  17. 融合黄金正弦和曲线自适应的多策略麻雀搜索算法
  18. 嵌入式软件研发所具备的技能
  19. 如何有效提升微信小程序的排名?
  20. 【软件测试7】web自动化测试——12306购票实战

热门文章

  1. 信息学奥赛C++语言: 魔方
  2. 信息学奥赛C++语言:for_求和2
  3. 37 MM配置-采购-采购订单-采购订单审批-编辑类
  4. mysql安装权限_mysql 新安装时的权限
  5. intel编译器_Intel编译器编译并行版lammps
  6. 中文select 加载完成后再排序
  7. django连接自定义mysql,Django中使用自定义Manager管理多个Mysql数据库
  8. vim查找关键字_vim常用命令及操作
  9. font-familly:' 阿里巴巴-普惠体 '【永久免费 】 - 下载与使用
  10. HM发卡系统 十分好看的ui