zoukankan      html  css  js  c++  java
  • AS3.0频谱-01

    AS3.0频谱系列-01:

    package fengzi.spectrum
    {
    	//import fengzi.colors.GetColor;
    	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(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"));
    		}
    
    	}
    }
    

      

  • 相关阅读:
    配置secondarynamenode主机名masters
    配置secondarynamenode主机名masters
    Redis 数据备份与恢复
    Redis 数据备份与恢复
    以太坊:Go、Java、Python、Ruby、JS客户端介绍
    以太坊:创建安全多签名钱包及高级设置
    以太坊:导入预售钱包,更新、备份、恢复账号
    以太坊客户端的选择与安装
    以太坊:C++客户端的安装与定制(一)
    2019最受欢迎数据库:MySQL居首PostgreSQL第二Oracle位列第八
  • 原文地址:https://www.cnblogs.com/fengziwu/p/10920569.html
Copyright © 2011-2022 走看看