天天看點

Flash 聲音頻譜圖二

1、建立一fla檔案soundSpectrum2.fla

2、建立一soundSpectrum2.as檔案,并與soundSpectrum2.fla關聯

soundSpectrum2.as:

package 

{

import flash.display.Graphics;

import flash.media.Sound;

import flash.media.SoundMixer;

import flash.utils.ByteArray;

import flash.display.Sprite;

import flash.events.Event;

import flash.events.MouseEvent;

public class soundSpectrum2 extends Sprite 

{

private var bytes:ByteArray = new ByteArray();

private const PLOT_HEIGHT:int = 200; 

private const CHANNEL_LENGTH:int = 256;

[Embed(source = "mp3/kate havnevik - solo.mp3")]

private var soundClass:Class;

private var snd:Sound

public function soundSpectrum2():void

{

snd = new soundClass();

                        snd.play();

addEventListener(Event.ENTER_FRAME, onHandler);

}

private function onHandler(e:Event):void 

{

SoundMixer.computeSpectrum(bytes, true, 0); 

var g:Graphics = this.graphics; 

g.clear(); 

g.lineStyle(0, 0x99FF00); 

g.beginFill(0x99FF00); 

g.moveTo(0, PLOT_HEIGHT); 

var n:Number = 0; 

// left channel 

for (var i:int = 0; i < CHANNEL_LENGTH; i++)  

n = (bytes.readFloat() * PLOT_HEIGHT); 

g.lineTo(i * 2, PLOT_HEIGHT - n); 

g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT); 

g.endFill(); 

// right channel 

//g.lineStyle(0, 0xCC0066);

g.lineStyle(0,0xCC0066,100,false,"noSacle","none");

g.beginFill(0x99FF00, 0.5); 

g.moveTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT); 

for (i = CHANNEL_LENGTH; i > 0; i--)  

n = (bytes.readFloat() * PLOT_HEIGHT); 

g.lineTo(i * 2, PLOT_HEIGHT - n); 

g.lineTo(0, PLOT_HEIGHT); 

g.endFill(); 

}

}

}

Ctrl+Enter效果:

Flash 聲音頻譜圖二

繼續閱讀