Flex中利用SoundMixer.computeSpectrum事件显示声音数据的例子
By Minidxer | July 25, 2008
接下来的例子演示了Flex中利用SoundMixer.computeSpectrum事件,显示声音数据。
下面是完整代码:
Download: main.mxml
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
- layout="vertical"
- creationComplete="init()">
- <mx:Script>
- <![CDATA[
- import mx.core.SoundAsset;
- [Embed('assets/song1.mp3')]
- private const song1:Class;
- private var mySong:SoundAsset = SoundAsset(new song1());
- private var byteArray:ByteArray = new ByteArray();
- private var timer:Timer;
- private function init():void {
- timer = new Timer(50);
- timer.addEventListener(TimerEvent.TIMER, doTimer);
- }
- private function doTimer(evt:TimerEvent):void {
- SoundMixer.computeSpectrum(byteArray, true);
- spr.graphics.clear();
- drawChannel(LEFT_CHANNEL_COLOR);
- drawChannel(RIGHT_CHANNEL_COLOR);
- }
- private function drawChannel(color:uint):void {
- var f:Number;
- var i:int;
- spr.graphics.lineStyle(1, color);
- spr.graphics.beginFill(color, 0.6);
- spr.graphics.moveTo(0, GRAPH_HEIGHT);
- for (i = 0; i < 256; i++) {
- f = byteArray.readFloat();
- spr.graphics.lineTo(i * 2, GRAPH_HEIGHT - ((f * GRAPH_HEIGHT)) * 0.75);
- }
- spr.graphics.lineTo(512, GRAPH_HEIGHT);
- spr.graphics.endFill();
- }
- private function playSong():void {
- mySong.play();
- }
- ]]>
- </mx:Script>
- <mx:Number id="GRAPH_WIDTH">512</mx:Number>
- <mx:Number id="GRAPH_HEIGHT">256</mx:Number>
- <mx:Number id="LEFT_CHANNEL_COLOR">0xFF0000</mx:Number>
- <mx:Number id="RIGHT_CHANNEL_COLOR">0x0000FF</mx:Number>
- <mx:ApplicationControlBar width="{GRAPH_WIDTH}">
- <mx:Label text="Left:" color="{LEFT_CHANNEL_COLOR}" fontWeight="bold" />
- <mx:Label text="Right:" color="{RIGHT_CHANNEL_COLOR}" fontWeight="bold" />
- <mx:Spacer width="100%" />
- <mx:Button label="Play" click="playSong(); timer.start()" />
- </mx:ApplicationControlBar>
- <mx:VBox id="hbox" width="{GRAPH_WIDTH}" height="{GRAPH_HEIGHT}" backgroundColor="white">
- <mx:Box id="spr" width="100%" height="100%" />
- </mx:VBox>
- </mx:Application>
代码:Peter deHaan 翻译/整理/编译:minidxer
Topics:
Flex |
No Comments » |
Tags: ByteArray, computeSpectrum, SoundMixer