利用Flex的Sound类动态显示导入MP3文件时的ID3信息
By Minidxer | March 7, 2008
下面的例子展示了在Flex中,如何利用Sound类动态读入MP3文件以及如何利用id3事件(Event.ID3)和Sound对象的id3属性取得MP3文件的ID3信息。
下面是完整的代码:
Download: load-Mp3-File-id3-information.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <!-- http://blog.flexexamples.com/2008/03/05/displaying-a-dynamically-loaded-mp3-files-id3-information-in-flex/ -->
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white">
- <mx:Script>
- <![CDATA[
- import mx.utils.ObjectUtil;
- private const URL:String = "http://www.helpexamples.com/flash/sound/song2.mp3";
- private var sound:Sound;
- private var soundLoaderContext:SoundLoaderContext;
- private function loadSound(url:String):void {
- var urlRequest:URLRequest = new URLRequest(url);
- // Check policy file
- soundLoaderContext = new SoundLoaderContext(1000, true);
- sound = new Sound();
- sound.addEventListener(Event.ID3, sound_id3);
- sound.load(urlRequest, soundLoaderContext);
- textArea.text = "";
- }
- private function sound_id3(evt:Event):void {
- var id3Info:ID3Info = Sound(evt.currentTarget).id3 as ID3Info;
- textArea.text += ObjectUtil.toString(id3Info);
- textArea.text += "\n---------- ---------- ----------\n";
- }
- ]]>
- </mx:Script>
- <mx:ApplicationControlBar dock="true">
- <mx:Button id="button"
- label="Load MP3"
- click="loadSound(URL);" />
- </mx:ApplicationControlBar>
- <mx:TextArea id="textArea"
- editable="false"
- width="100%"
- height="100%" />
- </mx:Application>
下面是执行效果(点击Load MP3):
下面的例子展示了如何利用Model绑定数据(data binding)来更新Label控件上的值:
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <!-- http://blog.flexexamples.com/2008/03/05/displaying-a-dynamically-loaded-mp3-files-id3-information-in-flex/ -->
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- verticalAlign="middle"
- backgroundColor="white">
- <mx:Script>
- <![CDATA[
- private const SONG1:String = "http://www.helpexamples.com/flash/sound/song1.mp3";
- private const SONG2:String = "http://www.helpexamples.com/flash/sound/song2.mp3";
- private var sound:Sound;
- private var soundLoaderContext:SoundLoaderContext;
- private function loadSound(url:String):void {
- var urlRequest:URLRequest = new URLRequest(url);
- // Check policy file
- soundLoaderContext = new SoundLoaderContext(1000, true);
- sound = new Sound();
- sound.addEventListener(Event.ID3, sound_id3);
- sound.load(urlRequest, soundLoaderContext);
- }
- private function sound_id3(evt:Event):void {
- model.id3info = Sound(evt.currentTarget).id3;
- }
- ]]>
- </mx:Script>
- <mx:Model id="model">
- <model>
- <id3info></id3info>
- </model>
- </mx:Model>
- <mx:ApplicationControlBar dock="true">
- <mx:Button label="Song 1" click="loadSound(SONG1);" />
- <mx:Button label="Song 2" click="loadSound(SONG2);" />
- </mx:ApplicationControlBar>
- <mx:Form>
- <mx:FormItem label="album:">
- <mx:Label text="{model.id3info.album}" />
- </mx:FormItem>
- <mx:FormItem label="artist:">
- <mx:Label text="{model.id3info.artist}" />
- </mx:FormItem>
- <mx:FormItem label="songName:">
- <mx:Label text="{model.id3info.songName}" />
- </mx:FormItem>
- <mx:FormItem label="track:">
- <mx:Label text="{model.id3info.track}" />
- </mx:FormItem>
- <mx:FormItem label="year:">
- <mx:Label text="{model.id3info.year}" />
- </mx:FormItem>
- </mx:Form>
- </mx:Application>
原文作者:Peter deHaan 翻译:minidxer
Topics:
Flex |
1 Comment » |
143 views
Tags: Flex, ID3, MP3, Sound
Trackbacks