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