file: /src/flex/aud02.mxml, 155 lines, 4015 characters           line numbers [show] [hide]
       1:<?xml version="1.0" encoding="utf-8"?>
       2:<mx:Application
       3:    xmlns:mx="http://www.adobe.com/2006/mxml"
       4:    xmlns:test="*"
       5:    backgroundColor="#000000"
       6:    creationComplete="startup()"
       7:>
       8:<mx:Script>
       9:    <![CDATA[
      10: 
      11:    import flash.display.*;
      12:    import flash.events.*;
      13:    import flash.net.*;
      14:    import flash.filters.*;
      15:    import flash.utils.*;
      16:
      17:    import mx.controls.*;
      18:    import mx.core.*;
      19:
      20:    [Embed(source="lil.mp3")]
      21:    private var myMp3Class:Class;
      22:
      23:    private var playing:Boolean;
      24:    private var myMp3:Sound;
      25:    private var myMp3Channel:SoundChannel;
      26:
      27:    private function startup():void
      28:    {
      29:        draw.graphics.beginFill(0xff00ff);
      30:        draw.graphics.drawRect(0,0,draw.width,draw.height);
      31:        draw.graphics.endFill();
      32:
      33:        myMp3 = new myMp3Class() as SoundAsset;
      34:
      35:        var timer:Timer = new Timer(50);
      36:        timer.start();
      37:        timer.addEventListener(TimerEvent.TIMER,levels);
      38:    }
      39:
      40:    private function levels(e:TimerEvent):void
      41:    {
      42:        var bytes:ByteArray = new ByteArray(); 
      43:        const PLOT_HEIGHT:int = 200; 
      44:        const CHANNEL_LENGTH:int = 256; 
      45:
      46:
      47:        var w:int = draw.width;
      48:        var h:int = draw.height;
      49:        var waveCenter:int = h / 2;
      50:
      51:        var g:Graphics = draw.graphics;
      52:
      53:        SoundMixer.computeSpectrum(bytes, false, 0); 
      54:         
      55:        g.clear(); 
      56:        g.beginFill(0x201040);
      57:        g.drawRect(0,0,w,h);
      58:        g.endFill();
      59:
      60:        g.lineStyle(0, 0x6600CC); 
      61:        g.beginFill(0x6600CC); 
      62:        g.moveTo(0, waveCenter); 
      63:         
      64:        var n:Number = 0; 
      65:             
      66:        // left channel 
      67:        for (var i:int = 0; i < CHANNEL_LENGTH; i++)  
      68:        { 
      69:            n = (bytes.readFloat() * PLOT_HEIGHT); 
      70:            g.lineTo(i * 2, waveCenter - n); 
      71:        } 
      72:        g.lineTo(CHANNEL_LENGTH * 2, waveCenter); 
      73:        g.endFill(); 
      74:         
      75:        // right channel 
      76:        g.lineStyle(0, 0xCC0066); 
      77:        g.beginFill(0xCC0066, 0.5); 
      78:        g.moveTo(CHANNEL_LENGTH * 2, waveCenter); 
      79:         
      80:        for (i = CHANNEL_LENGTH; i > 0; i--)  
      81:        { 
      82:            n = (bytes.readFloat() * PLOT_HEIGHT); 
      83:            g.lineTo(i * 2, waveCenter - n); 
      84:        } 
      85:        g.lineTo(0, waveCenter); 
      86:        g.endFill(); 
      87:
      88:
      89:        if(myMp3Channel != null)
      90:        {
      91:            g.beginFill(0xff0000);
      92:            g.drawRect(0,h / 5,myMp3Channel.leftPeak * w,h / 5);
      93:            g.endFill();
      94:            g.beginFill(0xffd000);
      95:            g.drawRect(0,3 * h / 5,myMp3Channel.rightPeak * w,h / 5);
      96:            g.endFill();
      97:        }
      98:
      99:        // second visu
     100:
     101:        g = draw2.graphics;
     102:        w = draw2.width;
     103:        h = draw2.height;
     104:        g.clear();
     105:        g.beginFill(0x04080e);
     106:        g.drawRect(0,0,w,h);
     107:        g.endFill();
     108:        g.lineStyle(0, 0x6600CC); 
     109:
     110:        // snarf out the floatvals.
     111:        var samples:Array = new Array();
     112:        bytes.position = 0;
     113:        SoundMixer.computeSpectrum(bytes, false, 0); 
     114:        var scale:Number = 5.0;
     115:        for(i = 0; i < CHANNEL_LENGTH; i++)
     116:            samples[i] = bytes.readFloat() * h * scale + h / 2;
     117:
     118:        var del:int = 32;
     119:        for(i = del; i < CHANNEL_LENGTH; i++)
     120:        {
     121:            var x:Number = samples[i];
     122:            var y:Number = samples[i - del];
     123:
     124:            if(i == del)
     125:                g.moveTo(x,y);
     126:            else
     127:                g.lineTo(x,y);
     128:        }
     129:
     130:    }
     131:
     132:    private function click():void
     133:    {
     134:        playing = !playing;
     135:        if(playing)
     136:            myMp3Channel = myMp3.play();
     137:        else
     138:        {
     139:            myMp3Channel.stop();
     140:        }
     141:            
     142:        var co:int = playing ? Math.random() * 0x1000000 : 0x000000;
     143:        draw.graphics.beginFill(co);
     144:        draw.graphics.drawEllipse(10,10,80,80);
     145:        draw.graphics.endFill();
     146:    }
     147:]]>
     148: 
     149:</mx:Script>
     150:  <mx:VBox>
     151:  <mx:UIComponent id="draw" width="512" height="100" click="click()"/>
     152:  <mx:UIComponent id="draw2" width="512" height="512" click="click()"/>
     153:  </mx:VBox>
     154:</mx:Application>
     155:
    

formatted by saShowCode.php