AS3.0实现声音的波形

package ch14_1
{
	import flash.display.Graphics;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.*;
	import flash.media.*;
	import flash.media.Sound;
	import flash.media.SoundChannel;
	import flash.net.URLRequest;
	import flash.utils.ByteArray;
	
	public class MusicBo extends MovieClip
	{
		var isplay:Boolean =false;
		var sound:Sound = new Sound();
		var channel:SoundChannel ;
		var currentPosition:uint=0;
		var byte:ByteArray = new ByteArray();
		var cv:Sprite = new Sprite();
		var g:Graphics = cv.graphics;
		public function MusicBo()
		{
			addChild(cv);
			sound.load(new URLRequest("music/春暖花开.mp3"));
			sound.addEventListener(Event.COMPLETE,loadComplete);
		}	
		private function loadComplete(e:Event):void
		{
			channel = sound.play();
			isplay =true;
			stage.addEventListener(MouseEvent.CLICK,stopGlobal);
			stage.addEventListener(MouseEvent.MOUSE_MOVE,changeGlobal);
			stage.addEventListener(Event.ENTER_FRAME,showSpectrum);
		}
		private function showSpectrum(e:Event)
		{
			SoundMixer.computeSpectrum(byte);
			g.clear();
			g.moveTo(0,400);
			g.lineStyle(0);
			g.beginFill(0xFF0000);
			g.lineTo(0,200);
			for(var i:int =0;i<256;i++)
			{
				g.lineTo(i/256*275,byte.readFloat()*100+200);
			}
			g.lineTo(275,200);
			g.lineTo(275,400);
			g.lineTo(0,400);
			g.endFill();
			
			
			
			g.moveTo(275,400);
			g.lineStyle(0);
			g.beginFill(0x000FF);
			g.lineTo(275,200);
			for(var j:int =0;j<256;j++)
			{
				g.lineTo(j/256*275+275,byte.readFloat()*100+200);
			}
			g.lineTo(550,200);
			g.lineTo(550,400);
			g.lineTo(275,400);
			g.endFill();
		}
		private function stopGlobal(e:MouseEvent):void
		{
			if(isplay)
			{
				currentPosition =channel.position;
				SoundMixer.stopAll();
			}else
			{
				sound.play(currentPosition);
			}
			isplay =!isplay;
		}
		private function changeGlobal(e:MouseEvent):void
		{
			SoundMixer.soundTransform = new SoundTransform((400-mouseY)/400,(mouseX-275)/275);
			//trace("音量:"+SoundMixer.soundTransform.volume+"声音平衡:"+SoundMixer.soundTransform.pan);
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值