Flash AS3.0构建声音可视化程序(波形图)教程

所属分类: 媒体动画 / Flash教程 阅读数: 71
收藏 0 赞 0 分享

本例为Flash AS3.0实例教程,在教程中我们将学习运用SoundMixer.computeSpectrum() 方法来构建简单的声音可视化程序(即波形图),希望能给朋友们带来帮助~~

AS3.0构建简单的声音可视化程序(波型图)

Flash AS3.0实例:声音可视化波形图

使用 SoundMixer.computeSpectrum() 方法来显示声音波形图


复制代码
代码如下:
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("月亮之上.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, 0x6600CC);
g.beginFill(0x6600CC);
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);
}

先加载并播放一个声音文件,然后在播放声音的同时侦听将触发 onEnterFrame() 方法的 Event.ENTER_FRAME 事件。onEnterFrame() 方法先调用 SoundMixer.computeSpectrum() 方法,后者将声音波形数据存储在 bytes ByteArray 对象中。

声音波形是使用矢量绘图 API 绘制的。 for 循环将循环访问第一批 256 个数据值(表示左立体声声道),然后使用 Graphics.lineTo() 方法绘制一条从每个点到下一个点的直线。第二个 for 循环将循环访问下一批 256 个值,此时按相反的顺序(从右到左)对它们进行绘制。生成的波形图可能会产生有趣的镜像图像效果。

以上就是Flash AS3.0构建声音可视化程序(波形图)教程,希望大家喜欢!

更多精彩内容其他人还在看

flash怎么绘制一个按笔画写出来的春字动画?

flash怎么绘制一个按笔画写出来的春字动画?flash中想要制作一个写出来的文字动画小狗哦,该怎么制作呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么定位图元? flash图元的三种定位方法

flash怎么定位图元?flash中很多朋友为了定位图元而烦恼,位置的对齐涉及到两个概念,注册点和变形点,下面我们就来看看flash图元的三种定位方法,需要的朋友可以参考下
收藏 0 赞 0 分享

FLASH怎么给透明按钮添加播放代码?

FLASH怎么给透明按钮添加播放代码?FLASH中国想要给按钮赋予一些功能,比如播放功能,该怎么办呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

Flash怎么制作滚动的方块GIF动画?

Flash怎么制作滚动的方块GIF动画?Flash中想要制作一个动画,今天我们就来看看比较简单的实例动画,就是一个滚动的方块,该怎么制作呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么给图片制作伸缩动画效果?

flash怎么给图片制作伸缩动画效果?flash中想要给图片添加一些动态显示效果,该怎么制作伸缩的动画效果呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

flash文件中的图片怎么替换?

flash文件中的图片怎么替换?flash文件中想要替换某一张图片,该怎么替换呢?下面我们就来看看详细的教程,很简单,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么使用绘图工具?

flash怎么使用绘图工具?flash中想要绘制图形,需要使用绘图工具,今天我们就来看看flash中绘图工具的使用方法,很简单,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么画月牙和云朵图形?

flash怎么画月牙和云朵图形?flash中想要画一个月亮和云朵组成的图,该怎么绘制呢?下面我们就来看看详细的画法,很简单,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么给图片添加聚光灯照射效果?

flash怎么给图片添加聚光灯照射效果?flash中想要给图片添加聚光灯效果,这样方便聚焦一个人物,该怎么实现呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么制作一段写字动画?

flash怎么制作一段写字动画?flash中想要制作一段毛笔写字的动画,该怎么制作呢?下面我们就来看看详细的教程,很简单,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多