AS3.0频谱-01
作者:互联网
AS3.0频谱系列-01:
package fengzi.spectrum { import flash.display.Sprite; import flash.events.Event; import flash.events.TimerEvent; import flash.geom.Point; import flash.geom.Rectangle; import flash.media.SoundMixer; import flash.utils.ByteArray; import flash.utils.Timer; import flash.geom.Matrix; import flash.display.BitmapData; import flash.display.Bitmap; import flash.geom.ColorTransform; import flash.filters.BlurFilter; import flash.filters.DisplacementMapFilter; public class Spectrum_01 extends Sprite { private var _sprite:Sprite; private var timer:Timer; private var thisW:Number; private var thisH:Number; private var byteArray:ByteArray; var sDis:Number = 30; var lDis:Number = 100; var maxDis:Number; var bitmapData:BitmapData; private var bitmap:Bitmap; var colorTF:ColorTransform = new ColorTransform(0.90,1,1,0.90); var numArr:Array = []; private var onBg:Boolean private var color:uint /** * Spectrum_01 构造函数(实例) * @param width 宽 * @param height 高 * @param _color 颜色 * @param onBg 黑色背景的布尔值(默认false黑色背景,true透明) */ public function Spectrum_01(width:Number=550,height:Number=400,_color:uint=0xFF00FF,_onBg:Boolean=false) { thisW = width; thisH = height; color=_color onBg=_onBg maxDis = height / 4; byteArray= new ByteArray(); _sprite = new Sprite(); for (var i:int= 0; i < 256; ++ i) { numArr[i] = 0; } bitmapData = new BitmapData(thisW,thisH,onBg,0); bitmap = addChild(new Bitmap(bitmapData)) as Bitmap; addChild( _sprite ); timer = new Timer(30); timer.addEventListener(TimerEvent.TIMER,timerHandler); timer.start(); } /** * onStageReSize() * Event.RESIZE时调用此方法,频谱随舞台缩放 */ public function onStageReSize():void { thisW = stage.stageWidth; thisH = stage.stageHeight; maxDis = height / 4; if (bitmapData) { bitmapData.dispose(); } bitmapData = new BitmapData(thisW,thisH,onBg,0); bitmap = addChild(new Bitmap(bitmapData)) as Bitmap; } private function timerHandler(event:TimerEvent):void { var aPower:Number = 3; var num:Number; SoundMixer.computeSpectrum( byteArray, false ); aPower /= 2; _sprite.graphics.clear(); _sprite.graphics.lineStyle( 1, color ); for (var i:int= 0; i < 128; i++) { num = Math.abs(byteArray.readFloat() + 0.1); numArr[ i ] += (num-numArr[ i ] ) * 0.25; num = numArr[i]; _sprite.graphics.drawCircle( thisW/2 + Math.sin(i * 360 / 128 * Math.PI / 180) * (sDis+num*maxDis),thisH/2 + Math.cos(i * 360 / 128 * Math.PI / 180) * (sDis+num*maxDis), num * 20 ); } _sprite.graphics.beginFill( 0xFF33FF, 1 ); for (i = 0; i <128; ++ i) { num = Math.abs(byteArray.readFloat() + 0.1); numArr[ i ] += (num-numArr[ i ] ) * 0.25; _sprite.graphics.drawCircle( thisW/2+ Math.sin(i * 360 /128 * Math.PI / 180) * (lDis+num*maxDis),thisH/2 + Math.cos(i * 360 /128 * Math.PI / 180) * (lDis+num*maxDis),num * num * 10 ); } bitmapData.draw( _sprite ); //bitmapData.fillRect( new Rectangle( 0,0, bitmapData.width, 1 ), 0 ); //bitmapData.fillRect( new Rectangle( 0,0, 1, bitmapData.height ), 0 ); //bitmapData.scroll( aPower *0, aPower *0); bitmapData.colorTransform( bitmapData.rect, colorTF); bitmapData.applyFilter( bitmapData, bitmapData.rect, new Point, new BlurFilter(2,2)); bitmapData.applyFilter(bitmapData,bitmapData.rect,new Point(),new DisplacementMapFilter(bitmapData,new Point(),1,2,5,5,"clamp")); } } }
标签:AS3.0,频谱,01,flash,Number,private,new,var,import 来源: https://www.cnblogs.com/fengziwu/p/10920569.html