Flex mp3播放

转载 2007年10月12日 17:19:00

<?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_channel
  private 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 循环执行的函数 timerHandler
  private function timerHandler(event:TimerEvent):void{
  //功能: 显示音乐的播放进度, 进度条会随着音乐的继续播放而向右缓缓移动;
  //把这个公式翻译为中文: 播放进度条的值=当前音乐播放时间/音乐的总时间
   progress_hs.value = my_channel.position/my_sound.length;
  }
  //改变播放进度: 每当 "播放进度" 条被用户拉动过而使其值改变时,就执行以下函数
  private function changeProgress():void{
   //音乐停止且必须停止,是为了从新的播放时间点开始播放
   //(感觉这里麻烦了点, 如果有更好的方法,恳请高手指点!请联系我:
   // www.Y-boy.cnwww.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_transform
   var my_transform:SoundTransform = my_channel.soundTransform;
   my_transform.volume = volume_hs.value; // 把"音量大小"控制条当前值赋给 my_transform.volume
   my_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>

 

http://www.5uflash.com/Html/flex/165134642.html(转自)
 

Flex开发实例教程-Mp3播放器代码demo分享

原文:Flex开发实例教程-Mp3播放器代码demo分享 源代码下载地址:http://www.zuidaima.com/share/1835085544524800.htm 本例中的MP3播...
  • yaerfeng
  • yaerfeng
  • 2016年09月01日 09:55
  • 964

使用DirectSound播放MP3文件

http://www.cppblog.com/codejie/archive/2009/03/26/77916.html 使用DirectSound播放MP3文件     将对...
  • woshiyuanlei
  • woshiyuanlei
  • 2015年06月02日 23:02
  • 590

VC中播放mp3文件的方法

http://blog.csdn.net/skilledprogrammer/article/details/5876602
  • milanleon
  • milanleon
  • 2014年02月26日 15:56
  • 1490

我的Android进阶之旅------>Android MediaPlayer播放mp3的实例--简易mp3播放器

大家好我们今天研究的是Android中很重要也最为复杂的媒体播放器---MediaPlayer. Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面...
  • qq446282412
  • qq446282412
  • 2013年04月09日 14:47
  • 15899

用DELPHI写的播放器核心代码,播放MP3无压力

主窗口代码: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Con...
  • tcmakebest
  • tcmakebest
  • 2013年12月14日 17:03
  • 1156

unity3d 直接播放mp3

unity3d 直接播放mp3 显示封面 using UnityEngine; using System.Collections; using Id3Lib; using NAudio.Wave; u...
  • AWNUXCVBN
  • AWNUXCVBN
  • 2016年02月18日 15:26
  • 4713

[c++新手学习]windows下如何使用c++播放mp3

毫无疑问,c++本身无法播放声音。在windows下可以借助mci(媒体控制接口)播放MP3资源,并且很好的控制播放对象。如果你是C++新人,想写一个控制台下播放mp3的小程序,那么本文完全适合你。 ...
  • u014559880
  • u014559880
  • 2016年02月26日 18:45
  • 1456

java播放mp3格式音频文件

下载第三方jar包,网址:http://www.javazoom.net/javalayer/javalayer.html 下载完成之后解压提取jl1.0.0.1.jar 将jl1.0.0.1.jar...
  • c1481118216
  • c1481118216
  • 2016年07月06日 00:03
  • 7109

C#中播放背景音乐几种的方法

最经在写winform程序,其中有用到播放背景音乐 特此收集了一些网上的教程: 1、调用非托管的dll using System.Runtime.InteropService...
  • henulwj
  • henulwj
  • 2013年05月26日 22:10
  • 14248

iOS开发之 AVAudioPlayer音频播放

1、相关知识点 播放音频可以使用框架 AVFoundation.framework 音效的播放 //1.获得音效文件的路径 NSURL*url= [[NSBundlemainBundle] URL...
  • sunnyboy9
  • sunnyboy9
  • 2016年04月30日 14:35
  • 2909
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Flex mp3播放
举报原因:
原因补充:

(最多只允许输入30个字)