[AS3]as3.0的sound类常用技巧整理(7)
问题七
我们现在想获取正在播放的MP3文件的一些相关信息,比如:艺术家、音乐集、风格, 等。
解决方案
读取sound对象的id3属性
MP3文件中可以包含很多关于声音文件的一些数据,这些数据通常包含艺术家、音乐集、发行时间、作曲家、等。包含信息的多少取决于制作或为这个音乐添加标签的人。在绝大多数情况下,我们至少可以从中获取歌曲名和艺术家的标签。
这些数据是我们用ActionScript通过访问sound对象的id3属性来得到的。
这些属性是flash.media.ID3Info 类的实例,它包含下面的一些具体属性:
album
artist
comment
genre
songName
TRack
year
所以要想知道音乐的名字,你可以这样做:
_sound.id3.songName
上面只是一个例子,注意:我们不能在音乐还没有真正下载到swf文件中就去获取这些信息。如果想在声音文件刚刚创建完毕或者刚刚开始播放就获取这些信息,将是不成功的。因为那时声音文件的具体信息还没下载到swf文件中,所以此时没有相关数据可用。
我们如何知道知道声音文件的id3相关数据已经到达swf文件中了呢?幸运的是,sound对象有个ID3事件可供我 们侦听,这个事件发生了,就表明可以安全地读取id3数据了。Sound对象继承了EventDispatcher类,因此我们可以用事件侦听函数来侦听 这个事件(这个事件被定义为 flash.events.Event.ID3),然后添加一个事件处理函数,来读取id3的信息。
下面的例子创建了一个文本框,并在其中列出了id3的所有信息
- package {
- import flash.display.Sprite;
- import flash.media.Sound;
- import flash.net.URLRequest;
- import flash.events.Event;
- import flash.text.TextField;
- public class ID3Reader extends Sprite {
- private var _sound:Sound;
- public function ID3Reader ( ) {
- _sound = new Sound(new URLRequest(“song.mp3″));
- _sound.addEventListener(Event.ID3, onID3);
- _sound.play( );
- }
- public function onID3(event:Event):void {
- // Create a text field and display it
- var id3Display:TextField = new TextField( );
- addChild(id3Display);
- id3Display.x = 10;
- id3Display.y = 20;
- id3Display.width = 200;
- id3Display.height = 200;
- id3Display.background = true;
- id3Display.multiline = true;
- id3Display.wordWrap = true;
- // Add some info about the song to the text field
- id3Display.text += _sound.id3.songName + ” “;
- id3Display.text += _sound.id3.artist + ” “;
- id3Display.text += _sound.id3.album + ” “;
- id3Display.text += _sound.id3.year + ” “;
- }
- }
- }
译者注:上面的这个例子的使用方法:
1, 新建立一个fla文件,命名,保存;
2, 找一首歌曲(mp3格式)复制到fla的那个目录里面,命名为song.mp3(mp3是后缀名);
3, 新建一个.as文件,把上述代码复制到其中,保存为ID3Reader.as保存在fla同一个目录;
4, 把fla文件的document属性(选中舞台,打开属性面板就能看到)设置为ID3Reader;
5, 按ctrl+enter测试。
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例