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);
}
}
}
AS3.0实现声音的波形
最新推荐文章于 2017-09-15 18:35:40 发布