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

所属分类: 媒体动画 / Flash教程 阅读数: 36
收藏 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怎么快速制作2020年新年贺卡?

flash怎么快速制作2020年新年贺卡?flash中想要设计一款新年贺卡,该怎么制作一个新年贺卡呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

Flash怎么制作图片循环滚动的动画效果?

Flash怎么制作图片循环滚动的动画效果?flash中想要制作一个推按滚动的效果,该怎么制作这个效果呢?下面我们就来看看详细的教程,详细请看下文介绍
收藏 0 赞 0 分享

Flash8怎么制作跷跷板动画效果?

Flash8怎么制作跷跷板动画效果?Flash8中想要制作一个模拟跷跷板动画的效果,该怎么制作这个动画效果呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么制作页面公告栏? flash滚动公告栏的制作方法

flash怎么制作页面公告栏?页面中我们经常能见到滚动的公告,该怎么制作滚动的文字公告呢?下面我们就来看看flash滚动公告栏的制作方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Animate怎么嵌入字体? Animate字体的添加方法

Animate怎么嵌入字体?Animate中想要嵌入字体,该怎么嵌入文字呢?下面我们就来看看Animate字体的添加方法,需要的朋友可以参考下
收藏 0 赞 0 分享

flash怎么制作擦出图片的动画效果?

flash怎么制作擦出图片的效果?flash中想要制作一个动画效果,该怎么制作擦除图片的效果呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

flash引导层动画效果怎么制作?

flash引导层动画效果怎么制作?flash中想要制作一个引导层的动画效果,该怎么制作这个动画效果呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

flash做怎么模拟化学式分子原型旋转的动画效果?

flash做怎么模拟化学式分子原型旋转的动画效果?flash中想要制作一个讲述化学式分子原型的一些动画,辅助教学,该怎么制作这个动画效果呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

Animate元件怎么导出为PNG序列?

Animate元件怎么导出为PNG序列?Animate中想要将原件到处为rng序列,该怎么实现呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

Flash怎么制作爬动的蚂蚁动画?

Flash怎么制作爬动的蚂蚁动画?flash中制作动画很简单,想要制作一个爬行的蚂蚁,该怎么给蚂蚁添加爬行的动画效果呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多