//创建位图数据
var bmpData:BitmapData = new BitmapData(256,100, false, 0x000000);
//创建模糊滤镜
var blurFilter:BlurFilter = new BlurFilter(2,1.6);
var matrix:Array = new Array();
matrix = matrix.concat([1, 0, 0, 0, 0]);// 红
matrix = matrix.concat([0, 1, 0, 0, 0]);// 绿
matrix = matrix.concat([0, 0, 1, 0, 0]);// 蓝
matrix = matrix.concat([0, 0, 0, .85, 0]);// 透明度
var alphaFilter:ColorMatrixFilter = new ColorMatrixFilter(matrix);
var bmp:Bitmap = new Bitmap(bmpData);
bmp.blendMode = BlendMode.LIGHTEN;
addChild(bmp);
addEventListener(Event.ENTER_FRAME,enterFrameHandler);
const PLOT_HEIGHT:int = 50;
const CHANNEL_LENGTH:int = 256;
var snd:Sound = new Sound();
var req:URLRequest = new URLRequest("song.mp3");
snd.load(req);
var channel:SoundChannel;
channel = snd.play();
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
snd.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete);
var bytes:ByteArray = new ByteArray();
function enterFrameHandler(e:Event) {
SoundMixer.computeSpectrum(bytes, false, 0);
var n:Number = 0;
bmpData.applyFilter(bmpData,bmpData.rect,new Point(0, 0),alphaFilter);
bmpData.draw(this);
for (var i:int = 0; i < CHANNEL_LENGTH; i++) {
n = (bytes.readFloat() * PLOT_HEIGHT);
bmpData.setPixel((i * 2),(PLOT_HEIGHT - n),0xffCC00);
}
for (i = CHANNEL_LENGTH; i > 0; i--) {
n = (bytes.readFloat() * PLOT_HEIGHT);
bmpData.setPixel((i * 2),(PLOT_HEIGHT - n),0xccff00);
}
bmp.bitmapData.copyPixels(bmpData,bmpData.rect,new Point(0,0));
bmp.visible = true;
bmpData.applyFilter(bmpData,bmpData.rect,new Point(0, 0),blurFilter);
}
//播放结束时删除enterFrameHandler方法
function onPlaybackComplete(event:Event) {
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
Flash 创建声音波形图象
最新推荐文章于 2021-06-25 23:23:10 发布