ActionScript3 使用sound类(e文翻译)——读取声音信息

我们现在想获取正在播放的MP3文件的一些相关信息,比如:艺术家、音乐集、风格, 等。

解决方案

读取sound对象的id3属性

具体讨论原创,转载说明出处 http://hi.baidu.com/flash_as3

MP3文件中可以包含很多关于声音文件的一些数据,这些数据通常包含艺术家、音乐集、发行时间、作曲家、等。包含信息的多少取决于制作或为这个音乐添加标签的人。在绝大多数情况下,我们至少可以从中获取歌曲名和艺术家的标签。

原创,转载说明出处 http://hi.baidu.com/flash_as3

这些数据是我们用ActionScript通过访问sound对象的id3属性来得到的。

原创,转载说明出处 http://hi.baidu.com/flash_as3

这些属性是flash.media.ID3Info 类的实例,它包含下面的一些具体属性:

原创,转载说明出处 http://hi.baidu.com/flash_as3

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 + "/n";
            id3Display.text += _sound.id3.artist + "/n";
            id3Display.text += _sound.id3.album + "/n";
            id3Display.text += _sound.id3.year + "/n";  
        }
}
}
原创,转载说明出处 http://hi.baidu.com/flash_as3

译者注:上面的这个例子的使用方法:

1,  新建立一个fla文件,命名,保存;

2,  找一首歌曲(mp3格式)复制到fla的那个目录里面,命名为song.mp3mp3是后缀名);

3,  新建一个.as文件,把上述代码复制到其中,保存为ID3Reader.as保存在fla同一个目录;

4,  fla文件的document属性(选中舞台,打开属性面板就能看到)设置为ID3Reader

5,  ctrl+enter测试。

但是译者在测试的时候,用了多种方法也没能解决中文显示成乱码的问题,望读者不吝赐教。

原创,转载说明出处 http://hi.baidu.com/flash_as3

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值