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

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 个值,此时按相反的顺序(从右到左)对它们进行绘制。生成的波形图可能会产生有趣的镜像图像效果。

转自:http://www.68design.net/Web-Guide/Flash/49942-1.html

Flash AS3.0实例教程:构建简单的声音可视化程序(波型图)相关推荐

  1. www.how2j.com_HOW-TO:快速开始使用Spring 4.0,以构建简单的REST-Like API(演练)

    www.how2j.com HOW-TO:快速开始使用Spring 4.0,以构建简单的REST-Like API(演练) 关于使用Spring MVC创建Web API的另一篇教程. 不太复杂. 只 ...

  2. Flash AS3.0实战

    如今网页游戏在游戏产业中占有半壁江山.在网页游戏中,百分之九十使用的是flash as3来做前端交互的开发.flash以其体积小等特性,吸引了无数的玩家.比如<傲剑>,<神仙道> ...

  3. Jboss EJB3.0实例教程

    Jboss EJB3.0实例教程 第一章 前言............................................................................. ...

  4. Jboss EJB3.0 实例教程

    第一章 前言.............................................................................................. ...

  5. flash as3.0 图片切换

    flash as3.0 图片切换 flash import fl.transitions.*; import fl.transitions.easing.*; import flash.system. ...

  6. 使用Express和MongoDB构建简单的CRUD应用程序

    by Zell Liew 由Zell Liew 使用Express和MongoDB构建简单的CRUD应用程序 (Building a Simple CRUD Application with Expr ...

  7. beta应用程序ios_通过构建简单的食谱应用程序来了解iOS最佳做法

    beta应用程序ios by Khoa Pham 通过Khoa Pham 通过构建简单的食谱应用程序来了解iOS最佳做法 (Learn iOS best practices by building a ...

  8. flash as3.0粒子效果实例教程

    1.新建Flash文档,设置:宽.高为 400 × 400 ,保存. 2.用椭圆工具在舞台上画一个 20 × 20 大小的圆. (你能选择任意的颜色) 3.右键单击圆形,把它转换成影片剪辑,注册点居中 ...

  9. Flash AS3.0中文帮助下载

    AS3.0和Flash Video Encoder的中文帮助终于出来了.       这是我们学习和开发的好帮手,决不能错过.      官方的下载地址(PDF格式):                 ...

最新文章

  1. HMM中文分词分析 知乎
  2. 就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers(转)
  3. OpenCV3编程入门(毛星云)之基于OpenCV的边缘检测
  4. list操作 rediscluster_Redis集群批量操作
  5. sessionId与cookie 的关系(百度文库)
  6. boa服务器实现温湿度显示,SMT车间温湿度分布式远程监控系统的设计
  7. console对象的方法log、info、warn、error的区别及几个实用的方法
  8. CV Code|计算机视觉开源周报20200602期~文末送书
  9. 真香!腾讯再发阳光普照奖:每人100股,价值超6万!
  10. python安装器要删吗_Centos7中,教你在不删除2.7下,安装python3
  11. apache php 503,宝塔linux面板 apache网站访问报错503 Service Unavailable解决
  12. Android学习笔记---28_网络通信之通过HTTP协议实现文件上传,组拼http 的post方法,传输内容
  13. 怎样将GIS图形复制到Windows剪贴板,粘贴到Word中
  14. 有序充电matlab仿真,电动汽车有序充电策略研究
  15. Android连接网络立即同步时区
  16. Error running Tomcat8: Address localhost:1099 is already in use
  17. Centos6.5之yum安装LAMP+wordpress
  18. QQ自动发送信息脚本
  19. mysql 计算农历_计算农历日期函数
  20. Temporal Action Proposal Generation with Transformers TAPG transformer论文阅读笔记

热门文章

  1. C#的多线程机制探索7
  2. Take a Photo and Upload it on Mobile Phones with HTML5
  3. 利用HTML5中Geolocation获取地理位置在Google Map上定位
  4. IRC 聊天工具(xchat,chatzilla,pidgin)入门教程
  5. 如何优化网页转化率?(下篇)
  6. 兼容IE和FF:获取Referer的JS和PHP方法 及 PHP利用curl伪造IP和来路
  7. linux命令之less 命令
  8. 非负矩阵分解推导(NMF)
  9. 最短路径——dj+floyd+spfa(hdu2544)
  10. Mysql的安装和配置