通过读取音频频谱信息,实时绘制声音频谱图像,可以是矩阵型或者波浪形,下面一起都来看看吧,演示效果见底部flash…
设计思路:加载外部音频,通过mixer将声音信息转化成数据信息存储于字节数组,最终读取并将数据信息转化为单精度浮点数,实时绘制矩形,以代表音频高低//
参考代码: package{
package {
import flash.display.Sprite;//导入基本显示列表构造块类
import flash.display.Graphics; //创建矢量形状
import flash.media.Sound; //允许您在应用程序中使用声音
import flash.media.SoundChannel; //控制应用程序中的声音
import flash.media.SoundMixer; //全局声音控件的静态属性和方法
import flash.net.URLRequest; //可捕获单个 HTTP 请求中的所有信息
import flash.events.Event;//创建 Event 对象的基类
import flash.utils.ByteArray;//类提供用于优化读取、写入以及处理二进制数据的方法和属性
public class wave extends Sprite {
private var sound:Sound; //初始化所需变量
private var ba:ByteArray;
private var num:Number;
private var sound_channel:SoundChannel;
private var t:Number=0;
//构造wave函数
public function wave():void {
sound=new Sound() ;
ba=new ByteArray() ;
sound.load(new URLRequest(“at times.mp3”));
sound_channel=sound.play();
this.addEventListener(Event.ENTER_FRAME,boxingtiaodong); //添加事件帧听
}
//boxingtiaodong函数
private function boxingtiaodong(event:Event) {
graphics.clear();
drawFunction(2,0xc0ff00);
}
//drawFunction函数
private function drawFunction(chuxi:Number,color:Number) {
graphics.lineStyle(chuxi,color,100);
SoundMixer.computeSpectrum(ba,false,0); //获取音谱信息
for (var i=30; i <= stage.stageWidth – 30; i++) { //绘制声波曲线
num=ba.readFloat() * 360;
if (i > 30) {
var fi=stage.stageHeight / 2 + num;
graphics.lineTo(i,fi);
} else {
graphics.moveTo(30,stage.stageHeight / 2 + num);
}
}
}
}
}



猜您还喜欢:
- As3快速入门(3)——常用编程元素 (此文被围观2374次)
- Flash out了? 继续还是放弃? (此文被围观3158次)
- AS3入门通俗版教程-歪谈as语法(上) (此文被围观2755次)
- flash as3实例纯代码制作声音频谱 (此文被围观8803次)
- [Flash AS3实例教程]AS3经典实例:拖拽影片,乘法口诀表,时钟 (此文被围观3168次)
- 谁去谁留-Flash与HTML5性能比较 (此文被围观2540次)
- as3中如何判断两个按键同时按下组合键 (此文被围观4770次)
- AS3缓动类-tween24的一种写法 (此文被围观5836次)