征集网锐志网络淘途找素材上91123RF图片库
创意在线首页
官方微博:腾讯
平面设计交互设计CG动漫工业设计建筑环境数码影像创意搜
 首页大赛征集资讯教程画廊访谈作品集创企同盟设计招聘人才专区竞赛台专题论吧 找素材看酷站设计网址库
教程网 Illustrator、Photoshop、CoreaDreaw、AI教程、PS教程
当前位置:首页 > 教程 > Flash > 正文
用flash9制作的播放音乐时频谱真实显示
作者: 来源:52design.com 发表时间:2007-8-29 16:51:51 浏览:
(需要首先将mp3转换为swf,再对转换后的swf进行处理,才能正确显示声音频谱),可以说Flash8及以下的版本对声音的支持是有限的,而Flash9在此方面进行了升级,对声音的处理能力大为提升,下面发一个用flash9制作的播放音乐时频谱真实显示的小实例(参考了他人心得),界面如下图1:

1.打开Flash9,在主场景第一帖上(仅此一帧):

import flash.display.Sprite;  
import flash.display.BlendMode;  //混合模式类 
import flash.events.*;   //事件类
import flash.media.Sound;    //声音类
import flash.media.SoundMixer;  //混音器类 
import flash.media.SoundChannel; //声道类  
import flash.net.URLRequest;    //URLRequest类
import flash.utils.ByteArray;   //ByteArray类
import flash.display.Bitmap; //位图类
import flash.display.BitmapData;
import flash.filters.BlurFilter; //滤镜类
import flash.filters.ColorMatrixFilter; 
import flash.filters.BitmapFilterQuality;  //滤镜品质类
import flash.geom.Rectangle;    //矩形类
import flash.geom.Point;  //Point类(点)
Stage.showDefaultContextMenu = false;
        //声明用来包含line和bg的Sprite
var Main:Sprite=new Sprite();
        //声明用来画线的Sprite
var line:Sprite=new Sprite();
        //声明用来放位图数据的BitmapData
var bmpData:BitmapData=new BitmapData(350,200,true,0xFF0000);
        //声明用来显示效果的Bitmap
var bmp:Bitmap=new Bitmap(bmpData);
        //声明一个ByteArray对象
var bArray:ByteArray = new ByteArray();
        //声明一个数组对象
var Ary:Array;
        //声明两个数字对象
var n:Number = 0;
var c:Number = 0;
        //声明一个ColorMatrix滤镜
var colorM:ColorMatrixFilter=new ColorMatrixFilter([0.98,0,0,0,0,0,0.98,0,0,0,0,0,0.98,0,0,0,0,0,0.90,0,]);
        //声明一个BlurFilter滤镜
var blur:BlurFilter = new BlurFilter(7,7,BitmapFilterQuality.LOW);
        //声明一个矩形
var r:Rectangle=new Rectangle(0,0,350,200);
        //声明一个点
var point=new Point(0,0);      
function showBar1(event:Event):void{
        n = 0;
        //这里是为了每2次才执行一次滤镜而做的if,如果需要让原来的波形图消失的更慢就把2改成更大的数字
        if(c%2==0){
        //将Main的内容绘制到bmpData
        bmpData.draw(Main);
        //应用滤镜
        bmpData.applyFilter(bmpData,r,p,colorM);
        bmpData.applyFilter(bmpData,r,p,blur);
        }
        c++;
        //清除绘图
        line.graphics.clear();
        //设置线条样式,颜色green,宽度1,透明度100
        line.graphics.lineStyle(1,0x00CC00,100);
        //将当前声音输出为ByteArray,注意哦,这次用的是false,上次是true
        SoundMixer.computeSpectrum(bArray,false,0);
        for(var i=0; i<256; i+=2){
                //在ByteArray中读取一个32位的单精度浮点数
                n = bArray.readFloat();
                //这个实际作用是把n扩大一下
                n = n*360;
                //如果i不为0
                if(i!=0){
                //画波形图
                line.graphics.lineTo(50+i,100-n/5);
                }else{
                //移动   
                line.graphics.moveTo(50,100-n/5);
    }
  }
}
//
play_btn.addEventListener(MouseEvent.MOUSE_DOWN,playSounds);
stop_btn.addEventListener(MouseEvent.MOUSE_DOWN,stopSounds);
pause_btn.addEventListener(MouseEvent.MOUSE_DOWN,pauseSounds);
var kaiguan:Boolean =false;
function playSounds(event:MouseEvent):void {
   if(kaiguan){
    _channel = _sound.play(_position);
kaiguan=false;
}
}
function stopSounds(event:MouseEvent):void {
    //....设置为0位置才能使进度条归零.....
_channel = _sound.play(0);
//......停止声音的方法........
SoundMixer.stopAll( );
kaiguan=true;
}
function pauseSounds(event:MouseEvent):void {
    if(!kaiguan) {
      _position = _channel.position;
      _channel.stop( );
   kaiguan = !kaiguan;
  }          
}
//
var _position:int =0;
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void{
     //..........进度条初始值.........................
    var barWidth:int = 271;
    var barHeight:int = 5;
    var loaded:int = _sound.bytesLoaded;
    var total:int = _sound.bytesTotal;           
    var length:int = _sound.length;
    _position = _channel.position;
    //................ 画进度条背景....................................
    graphics.clear(  );
    graphics.beginFill(0x333333);
    graphics.drawRect(40, 187, barWidth, barHeight);
    graphics.endFill(  );
//..................................................................
    //.............时间显示设置区................................................
var miao:int=Math.round(length/1000)-Math.round(length/60000)*60;
var fen:int=Math.round(length/60000);
if(fen<10){
  if(Math.abs(miao)<10){
   musicTimer.text="0"+fen+":0"+ Math.abs(miao);
  }else{
  musicTimer.text="0"+fen+":"+ Math.abs(miao);}
  }else{
   if(Math.abs(miao)<10){
    musicTimer.text=fen+":0"+ Math.abs(miao);
    }else{
     musicTimer.text=fen+":"+ Math.abs(miao);
  }
}
var playmiao:int=_position/1000;
if(playmiao<60){
  if(playmiao<10){
     musicPlayingTimer.text="00:0"+playmiao;
  }else{
   musicPlayingTimer.text="00:"+playmiao;
   }
 &





在线编辑:morion
本文链接:


推荐阅读:
·第九届中国高校美术(设计)作品学年展 征稿章程
·2017第三届“包豪斯奖”国际设计大赛
·青春唯美插画培训网络远程班正在招生
·创企同盟VIP:网络品牌建设提供商-木兰设计
·“汇聚文创动能,发展天府文化”成都创意设计周将于11月10日开启
·2019 年国际足联女子世界杯会徽和口号正式
·世界最大移动通讯公司 沃达丰(Vodafone)启用新 LOGO
·德国足协公布2024年欧洲杯申办LOGO
免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息。对本文有异议,请联络本站!
转载要求:文章作者及来源信息必需保留。转载之图片、文件请不要盗链本站地址,且不准打上各自站点的水印!

创意素材推荐 矢量 | PSD | 模板 | 高清 | PNG | 网页背景
2009-02-06
韩国站点 素材资源 艺术摄影 游戏娱乐 影视网站 建筑家居 FLASH站 旅游购物 明星网站
设计门户 优秀企业 时尚品牌 象素站点 数码通信 设计公司 汽车网站 国外优秀 儿童网站
个性展示 网站教学 工 作 室 学校教育 卡通漫画 文化艺术 体育运动 美容健身 食品饮料
近期推荐报道 返回首页更多精彩等着你!

Photoshop| Photoshop快速调出情侣图片柔美的插画艺术| 绝望的小熊—美国插画师Luke
网页设计| 波兰Tiquet网站设计作品欣赏插画艺术| Nanami Cowdroy灵动黑白插画
Photoshop| Photoshop调出美女图片绚丽的橙红HTML/CSS| 实现DIV透明而里面的文字不透明
平面设计| 世界杯之平面广告欣赏插画艺术| Alberto Cerrite&ntil
平面设计| Havaianas人字拖最新平面广告系列网页设计| 英国madefavourite简洁细腻型
韩国站点 素材资源 艺术摄影 游戏娱乐 影视网站 建筑家居 FLASH站 旅游购物 明星网站 个性展示 网站教学 工 作 室 学校教育
设计门户 优秀企业 时尚品牌 象素站点 数码通信 设计公司 汽车网站 国外优秀 儿童网站 文化艺术 体育运动 美容健身 食品饮料
网站名称:whaternet
网站地址:http://whaternet.com/
加入时间:2014-8-5 13:59:20
网站名称:mnnaite
网站地址:http://www.mnnaite.com/static/
加入时间:2014-8-5 13:58:07
网站名称:tijuanaflats
网站地址:http://tijuanaflats.com/
加入时间:2014-8-5 13:55:32
网站名称:digital
网站地址:http://production-digital.com/
加入时间:2014-8-5 13:54:45
网站名称:deutschesee
网站地址:http://www.deutschesee.de/
加入时间:2014-8-5 13:51:54
网站名称:kennedy
网站地址:http://www.kennedyandoswald.com/
加入时间:2014-8-5 13:50:57
关于本站 | 联系方式 | 商业服务 | 合作伙伴 | 站点地图 | 免责声明 | 版权声明 | 在线投稿