flash 构建简单的声音可视化程序

 
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("http://www.gequxiazai.cn/x/gequ/rm/tq00x4074/7d5e3954b2740a48/7f6a258ce575f888.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);
 //获取当前声音波形的快照,并将其放在指定的 ByteArray 对象中
 var g:Graphics = this.graphics;
 //创建矢量形状
 g.clear();
 //清除之前图形
 g.lineStyle(0, 0x6600CC);
 //线条样式
 g.beginFill(0x6600CC);
 //填充颜色
 g.moveTo(0, PLOT_HEIGHT);
 //绘制图形
 var n:Number = 0;
 //左声道
 for (var i:int = 0; i < CHANNEL_LENGTH; i++) {
  n = (bytes.readFloat() * PLOT_HEIGHT);
  //读取一个 IEEE 754 单精度浮点数s
  g.lineTo(i * 2, PLOT_HEIGHT - n);
 }
 g.lineTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
 //绘制一条从当前绘画位置开始到 (x, y) 结束的直线
 g.endFill();
 //右声道
 g.lineStyle(0, 0xCC0066);
 //指定一种线条样式
 g.beginFill(0xCC0066, 0.5);
 //指定一种简单的单一颜色填充
 g.moveTo(CHANNEL_LENGTH * 2, PLOT_HEIGHT);
 //将当前绘画位置移动到 (x, y)
 for (i = CHANNEL_LENGTH; i > 0; i--) {
  n = (bytes.readFloat() * PLOT_HEIGHT);
  //读取一个 IEEE 754 单精度浮点数s
  g.lineTo(i * 2, PLOT_HEIGHT - n);
  //绘制一条从当前绘画位置开始到 (x, y) 结束的直线
 }
 g.lineTo(0, PLOT_HEIGHT);
 //绘制一条从当前绘画位置开始到 (x, y) 结束的直线
 g.endFill();
 //对从上一次调用 beginFill()方法之后添加的直线和曲线应用填充
}
function onPlaybackComplete(event:Event) {
 removeEventListener(Event.ENTER_FRAME, onEnterFrame);
 //删除侦听器
}

时间: 2025-01-19 14:06:05

flash 构建简单的声音可视化程序的相关文章

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

本例为Flash AS3.0实例教程,在教程中我们将学习运用SoundMixer.computeSpectrum() 方法来构建简单的声音可视化程序(即波形图),希望能给朋友们带来帮助~~ AS3.0构建简单的声音可视化程序(波型图): 开发"> 使用 SoundMixer.computeSpectrum() 方法来显示声音波形图: import flash.display.Graphics; import flash.events.Event; import flash.media.So

通过构建一个简单的SMS应用程序来理解Worklight的适配器框架

一些http://www.aliyun.com/zixun/aggregation/14219.html">移动应用程序不需要后端连接,比如游戏或计算器,但大多数企业移动应用程序都会通过移动化可通过网络获得的数据和功能而获益.这些数据和功能可能来自企业的系统,或者通过公开为 API 的第三方服务获得.Worklight 在 Worklight 服务器中提供了一个适配器框架来调用这些服务. Worklight 支持 3 种核心适配器类型: HTTP 用于一般 HTTP 连接,包括 RESTf

构建一个简单的演示应用程序Watson Films

本文将使用 Watson Question and Answer (Q&A) 技术和 Watson 所公开的 Q&A API 构建一个简单的演示应用程序 Watson Films.认知存在于人类所做的几乎任何活动中,比如语言理解.感觉.判断.运动技巧.学习.空间处理和社交行为.我们越来越期望所使用的机器能表现出相同的认知行为.IBM Watson 代表着向认知系统(一个新的计算时代)进军的第一步.除了使用编程计算,Watson 拥有 3 大让它变得真正独一无二的功能: 自然语言处理 假设生

如何使用AJAX技术构建优秀的Web应用程序

一. 简介 异步JavaScript+XML(即Ajax),是一种创建交互式web应用程序的Web开发技术.这种程序使用JavaScript和XML从客户端提交服务器请求,且整个过程中仅需要交换少量的数据而不必提交整个web页面.因此,这样的程序将更快和更具响应性,并将成为新一代客户机-服务器系统的重要基础技术之一.你可以在站点http://www.google.com/webhp?complete=1&hl=en处看到一种良好的AJAX实践技术展示.在此页面中,如果你把任何字母输入到文本框内,

使用FleaPHP框架构建简单留言本应用

架构 [FleaPHP介绍] FleaPHP是国产的一个MVC框架,目前主流的框架Zend Framework.Symfony.CakePHP,国内还有FCS.Plite等框架都是值得期待的. 我们看看官方的介绍:FleaPHP 为开发者轻松.快捷的创建应用程序提供帮助.FleaPHP 框架简单.清晰,容易理解和学习,并且有完全中文化的文档和丰富的示例程序降低学习成本.使用 FleaPHP 框架开发的应用程序能够自动适应各种运行环境,并兼容 PHP4 和 PHP5.FleaPHP 的全名是 Fa

使用 IBM Worklight 优化框架为多个设备构建跨平台的移动应用程序

简介 开发移动应用程序(和为移动应用程序开发提供资助)的常见挑战之一是在跨平台场景中呈现它们,也就是说,让同一个移动应用程序在 iOS.Android 和 BlackBerry 设备上同等地显示.Worklight 优化 API 缓解了这一问题,最大程度地利用了可跨平台共享的常见业务逻辑,还通过每个平台和设备所独有的逻辑来最大限度地提高自定义. 本文将介绍 Worklight 优化框架如何让为一个样例业务案例场景轻松实现跨设备的移动企业解决方案.文中首先概述了 Worklight 产品.优化框架

用JavaHelp 2.0构建下一个Java应用程序的帮助系统

简介:即使是帮助系统设计师有时也可能需要帮助,有了 JavaHelp 2.0,终 于可以提供帮助了.在本文中,将介绍如何使用 Java 平台特有的帮助系统 API 构建一个标准的.全功能的.容易使用的系统,以向 Java 应用程序用户展 示 在线信息. 从开发者的角度看,自动化的帮助组件,或者帮助系统,通常是在构建一个 Java 应用程序时最后考虑的事情.不过对于用户来说,帮助系统是学习新应用 程序时非常有价值的资源.随着对功能更全和更可靠的应用程序帮助系统的需求 增加,应用程序开发人员的时间和

使用NetBeans IDE创建并运行一个简单的web应用程序

在本教程中,您将使用 NetBeans IDE 创建并运行一个简单的 web 应用程序,Hello Web.本示例应用程序要求您输入一个名字,之后使用那个名字显示一条信息.首先,您需要使用一个输入框来实现这个页面.之后您使用一个用户可以选择名字的下拉列表来替换那个输入框.下拉列表中输入的名字来自数据库表. 本教程需要以下技术以及资源的支持 JavaServer Faces 组件/Java EE 平台 1.2 with Java EE 5*1.1 with J2EE 1.4 Travel 数据库

《ANTLR 4权威指南》——3.4 构建一个语言类应用程序

3.4 构建一个语言类应用程序 我们继续完成能够处理数组初始化语句的示例程序,下一个目标是能够翻译初始化语句,而不仅仅是能够识别它们.例如,我们想要将Java中,类似{ 99, 3, 451 }的short数组翻译成"\u0063\u0003\u01c3".注意,其中十进制数字99的十六进制表示是63. 为了完成这项工作,程序必须能够从语法分析树中提取数据.最简单的方案是使用ANTLR内置的语法分析树遍历器进行深度优先遍历,然后在它触发的一系列回调函数中进行适当的操作.正如我们之前看到