Flash AS3.0執行個體教程:構建簡單的聲音可視化程式(波型圖)

來源:互聯網
上載者:User

本例為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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.