天天看點

flash as3 加載音樂并顯示頻譜

//加載網絡音樂 并顯示頻譜
這個例子是加載外部的檔案,本例為音樂檔案,注意load方法隻能接受URLRequest檔案
//加載網絡音樂 并顯示頻譜
這個例子是加載外部的檔案,本例為音樂檔案,注意load方法隻能接受URLRequest檔案
var request:URLRequest=new URLRequest("http://www.wangzi.net/kissrain.mp3");
//定義一個loader
var loader:Loader = new Loader();
//為加載過程建立事件偵聽器
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress);
//加載完成的事件偵聽器
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
//加載過程中執行
function loadProgress(event:ProgressEvent):void {
	var percentLoaded:Number=event.bytesLoaded/event.bytesTotal;
	percentLoaded=Math.round(percentLoaded*100);

	txt.text="音樂已緩沖 "+percentLoaded+"%"+"";
}
//加載完成後執行
function loadComplete(event:Event):void {
	trace("Complete");
}
//載入
loader.load(request);
//放置在場景中
var shengyin:Sound=new Sound();
//用load方法把dizhi加載進來
shengyin.load(request);
//控制聲音:播放
shengyin.play();

var _sound:Sound=new Sound();
var _channel:SoundChannel=new SoundChannel();
var url:String="http://www.wangzi.net/kissrain.mp3";
var _request:URLRequest = new URLRequest(url);
_sound.load(_request);
_channel=_sound.play();
var bxzr:Sprite=new Sprite();
addChildAt(bxzr,1);
var bx:Sprite=new Sprite();
bxzr.addChild(bx);
var byteArray:ByteArray = new ByteArray();
var n:Number=10;
addEventListener(Event.ENTER_FRAME,yx);
function yx(event:Event):void {
 bx.graphics.clear();
 SoundMixer.computeSpectrum(byteArray,true,1);//将目前聲音輸出為ByteArray
 for (var i=0; i <200; i=i+5) {
  n = byteArray.readFloat()*60;//把資料流讀取成浮點數并擴大其值
  bx.graphics.lineStyle(3,0xFFFFFF,1,true,"noSacle","none");
  bx.graphics.moveTo(27+i,50);
  
  bx.graphics.lineTo(27+i,50-n)
  
  bx.graphics.lineStyle(3,0xFFFFFF,0.2,true,"noSacle","none");
  bx.graphics.lineTo(27+i,50+n);
 }
}

另一種頻譜效果import flash.display.Graphics;
import flash.events.Event;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.media.SoundMixer;
import flash.net.URLRequest;

const PLOT_HEIGHT:int=200;
const CHANNEL_LENGTH:int=256;

var snd:Sound = new Sound();
var req:URLRequest=new URLRequest("http://www.wangzi.net/kissrain.mp3");
snd.load(req);

var channel:SoundChannel;
channel=snd.play();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
snd.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete);

var bytes:ByteArray = new ByteArray();

function onEnterFrame(event:Event):void {
	SoundMixer.computeSpectrum(bytes, false, 0);

	var g:Graphics=this.graphics;

	g.clear();
	g.lineStyle(0, 0xFF0000);
	g.beginFill(0xFF0000);
	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.beginFill(0xCC0066, 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();
}

function onPlaybackComplete(event:Event) {
	removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}