熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Javascript >> 正文

用JavaScript實現利用FLASH嵌入網頁聲音

2013-11-23 17:58:50  來源: Javascript 
本JavaScipt教程將讓你感受到FLASH給您帶來有聲世界的無窮魅力在開始本教程之前我先介紹一下本教程涉及到的內容隱藏嵌入的SWF 播放流同步的SWF 從指定的幀上開始流 停止和播放流 檢查是否磁道在播放 檢查是否播放器准備好 檢查SWF轉載的百分比驗證SWF是否完全裝載好檢查播放器的版本號設置最小的播放器版本號 清除錯誤信息等等好吧開始我們的教程吧

  隱藏嵌入的SWF

  FlashSound的JavaScript API往網頁插入一個FlashSound對象隨同插入還有embedSWF()方法但是在網頁中我們為什麼不能看到這個對象呢?哦原來是FlashSound隱藏了這個對象在Internet浏覽器中FlashSound是這個對象變得透明也就是說你看不到這個對象但實際上它是存在的而在Netscape浏覽器中這個對象的顏色被指定為跟網頁相同的顏色所以你也看不到它你可以在Netscape浏覽器中通過使用bgcolor屬性來設置對象的顏色以上兩種方法正是隱藏對象的核心所在試一試吧下面我的代碼是實現當鼠標移過對象時播放scaleswf文件所以我們這樣來創建FlashSound對象

  mySoundObjbgcolor = #ff;

  mySoundObjembedSWF(scaleswf);

  

  下面的代碼可以讓你在Netscape浏覽器中看到在Play a Scale下面有一個小點它正是我們創建的FlashSound因為此時它的顏色不是與網頁的背景色相同看看代碼吧

  

  var mySoundObj = new FlashSound();

  

  

  

  onmouseover=mySoundObjTGotoAndPlay(/scaleevent start)>

  Play a Scale

  mySoundObjbgcolor = #ff;

  mySoundObjembedSWF(scaleswf);

  

  播放流同步的SWF

  Flash文件格式支持四種同步的類型Event(事件)Start(開始)Stop(停止)和Stream(流)事件同步允許你同時播放多個磁道的聲音開始同步可以避免並行的磁道播放停止同步作用是停止磁道播放而對於流同步聲音包含了聲音的幀尺寸樣式它可以反復地天衣無縫地播放不象其它真實的流聲音格式(比如Real Audio)Flash流文件是在播放的時候裝載到浏覽器中去的當播放結束的時候這個流聲音就全部被裝載浏覽器的高度緩沖區中所以在接下去的播放是來源與浏覽器的告訴緩沖區而不是來源於網頁

  以下的連接是播放一個流同步它解釋了FlashSound的JavaScript API代碼如下

  

  var mySoundObj = new FlashSound();

  

  mySoundObjembedSWF(earsonlyswf);

  

  這裡值得注意的是Flash聲音被設置在Flash編輯器中來自動開始播放
從指定的幀上開始流 FlashSound的JavaScript API支持象CD播放器那樣的隨機訪問磁道中任何幀的能力所以你可以指定任意的幀好來播放你喜歡的聲音

  如圖所示的四個連接是連到一個典型的CD播放器控制面板上第一個連接是回到第一幀開始播放第二個連接是否從第幀處開始播放第三個連接是從第幀處開始播放而第四個連接是暫停所有的播放

  

  (圖

  詳細的代碼如下

  

  var mySoundObj = new FlashSound();

  

  

  onmouseover=mySoundObjTGotoAndPlay(/)>

  從第幀開始播放

  

  onmouseover=mySoundObjTGotoAndPlay(/)>

  從第幀開始播放

  

  onmouseover=mySoundObjTGotoAndPlay(/)>

  從第幀開始播放;

  

  onmouseover=mySoundObjTStopPlay(/)>

  暫停<

  mySoundObjautostart = false;

  mySoundObjembedSWF(earsonlyswf);

  

  這裡我們將autostart(自動開始播放)設置為Flase這個例子很好地說明了我們怎樣利用JavaScript來重載Flash行為

  停止和播放流

  FlashSound的JavaScript API支持一個等價於暫停的方法即TStopPlay()這個TStopPlay()方法有一個參數即timeline(時間線)我們可以使用/(反斜線)來指定主時間線TStopPlay()可以在指定的時間線上停止向前播放而不會重新播放值得指出的是這個TstopPlay()方法只能停止了設置為流同步的聲音的播放而不能設置為時間或者開始同步的聲音的播放

  同樣FlashSound的JavaScript API頁支持等價於播放的方法即TPlay()這個TPlay()方法也有一個參數也為時間線類似地我們可以使用/來指定主時間線TPlay()可以在被TStopPlay()停止播放的幀處的時間線(傳遞給TPlay()的參數)上開始播放或者從第一幀開始播放這個TPlay()方法也只能開始播放被設置為流同步的聲音也不能開始播放被設置為時間同步或者開始同步的聲音

  

  (圖)

  如圖所示的三個連接是連到典型的磁帶錄音機控制面板上第一個連接是利用TGotoAndPlay()重新播放第二個連接是利用TStopPlay()來暫停播放而第三個連接是利用Tplay來繼續播放被暫停在某處的聲音詳細的代碼如下

  

  var mySoundObj = new FlashSound();

  

  重新開始播放

  暫停播放

  繼續播放

  mySoundObjautostart = false;

  mySoundObjembedSWF(earsonlyswf);

  

  檢查是否磁道在播放 FlashSound的JavaScript API可以讓你檢查磁道是否在播放為了做到這點它為了提供了IsPlaying()方法這個IsPlaying()方法沒有任何參數它只是在有磁道在播放的時候才返回True(真)否則就返回False(假)所以你可以利用這個方法來創建一些例子比如你可以在聲音磁道沒有播放的情況下在另外一個磁道播放聲音這個實現起來是很簡單的

  如圖所示的前三個連接是連到典型的磁帶錄音機控制面板而右邊的連接是檢查在時間上是否有磁道在播放當鼠標移過它的時候我們就可以獲得是否播放的答案了在圖中第二行的連接是播放一個scale音樂但是它只能在教程音樂沒有播放的時候才播放為了實現這個目的我們來檢查教程音樂的IsPlaying()的值是否為False這裡教程音樂對象為mySoundObj而scale音樂對象是mySoundObj所以實現以上功能的語句應該為

  if (!mySoundObjIsPlaying()) mySoundObjTGotoAndPlay(/scaleevent start)

  好吧我們可以試一試我們的這幾個連接了首先開始播放我們的教程音樂在停止該該教程音樂以播放scale音樂然後在繼續教程音樂這時候你會發覺scale音樂停止了

  

  (圖

  具體源代碼如下

  

  var mySoundObj = new FlashSound();

  var mySoundObj = new FlashSound();

  

  

  

  onmouseover=mySoundObjTGotoAndPlay(/)>播放教程音樂

  

  onmouseover=mySoundObjTStopPlay(/)>暫停播放

  

  onmouseover=mySoundObjTPlay(/)>繼續播放

  

  onmouseover=alert(mySoundObjIsPlaying(/))>是否播放

  

  onmouseover=if (!mySoundObjIsPlaying()) mySoundObjTGotoAndPlay(/scaleevent start)>播放Scale音樂

  mySoundObjautostart = false;

  mySoundObjembedSWF(earsonlyswf);

  mySoundObjembedSWF(scaleswf);

  

  檢查是否播放器准備好

  FlashSound的JavaScript API的isPlayerReady()方法在浏覽器識別到播放器和JavaScrip對象並且SWF至少被裝載一個幀上的時候就返回True(真值)如果不是這樣的話就返回FalseFlashSound API是在所有其它API方法調用之前執行這個方法所以你不用擔心多次使用它會有什麼問題的但是你在調用一個Flash方法的時候你必須使用isPlayerReady()因為Flash方法不是FlashSound的 JaScript API的一部分

  如圖所示的連接是播放一個Flash流磁道它在FlashSound上播放一段教程音樂我們可以增加兩條語句來實現第一條在嵌入教程音樂之前我們打印出isPlayReady()的數值第二條在嵌入教程SWF之後打印出isPlayerReady()的數值這樣我們可以看看這兩次的區別從打印的結果我們可以發現在嵌入教程音樂之前isPlayReady()的值是False而在嵌入教程音樂之後其值是True

  

  (圖

  下面是詳細的代碼

  

  var mySoundObj = new FlashSound();

  

  

  

  onmouseover=mySoundObjTGotoAndPlay(/)>播放教程音樂

  

  onmouseover=mySoundObjTStopPlay(/)>暫停播放

  

  onmouseover=mySoundObjTPlay(/)>繼續播放

  

  onmouseover=alert(mySoundObjIsPlaying(/))>是否播放

  alert(Before Embedding isPlayerReady() returns +

  mySoundObjisPlayerReady());

  mySoundObjautostart = false;

  mySoundObjembedSWF(earsonlyswf);

  alert(After Embedding isPlayerReady() returns +

  mySoundObjisPlayerReady());

  

  檢查SWF轉載的百分比 FlashSound JavaScript API的PercentLoaded()方法返回SWF裝載到浏覽器的百分比這個數值可以是從的任意值如果你裝載一個SWF(當然包括流同步磁道)到網頁的時候這個數值都將小於等於

  點擊如圖所示的連接就可以播放一個Flash流磁道它是一個FlashSound的教程音樂對於上面的代碼語句我們也只需要修改兩條語句第一條在嵌入教程音樂的之前打印出PercentLoaded()的數值第二條在嵌入教程音樂SWF之後打印這個數值從結果中你可以發現在嵌入教程音樂之前PercentLoaded()的數值為而在嵌入教程音樂完畢之後這個數值為

  

  (圖

  以下是具體代碼

  

  var mySoundObj = new FlashSound();

  

  

  

  onmouseover=mySoundObjTGotoAndPlay(/)>播放教程音樂

  

  onmouseover=mySoundObjTStopPlay(/)>暫停播放

  

  onmouseover=mySoundObjTPlay(/)>繼續播放

  

  onmouseover=alert(mySoundObjIsPlaying(/))>是否播放

  alert(Before Embedding PercentLoaded() returns +

  mySoundObjPercentLoaded());

  mySoundObjautostart = false;

  mySoundObjembedSWF(earsonlyswf);

  alert(After Embedding PercentLoaded() returns +

  mySoundObjPercentLoaded());

  

  驗證SWF是否完全裝載好

  FlashSound JavaScript API的Tloaded方法返回SWF是否已經完全裝載到浏覽器這個數值可以為False或者True當你往網頁嵌入你的SWF文件(當然包括流同步磁道)的時候它返回Fasle值只能等到裝載完畢的時候才返回True值

  點擊如圖所示的連接就將播放一段Flash流磁道即FlashSound中的教程音樂當然我們對上面的代碼要修改兩個地方第一在嵌入教程音樂之前打印Tloaded()的數值第二在嵌入教程音樂之後打印Tloaded()的數值此時從結果中你可以發現在嵌入教程音樂之前TLoaded()的數值為False值而在嵌入教程音樂完畢之後這個數值為True值

  

  (圖

  具體修改的代碼如下

  

  var mySoundObj = new FlashSound();

  

  

  

  onmouseover=mySoundObjTGotoAndPlay(/)>播放教程音樂

  

  onmouseover=mySoundObjTStopPlay(/)>暫停播放

  

  onmouseover=mySoundObjTPlay(/)>繼續播放

  

  onmouseover=alert(mySoundObjIsPlaying(/))>是否播放

  alert(Before Embedding TLoaded() returns +

  mySoundObjTLoaded());

  mySoundObjautostart = false;

  mySoundObjembedSWF(earsonlyswf);

  alert(After Embedding TLoaded() returns +

  mySoundObjTLoaded());

  

  檢查播放器的版本號 隨著Flash播放器的飛速發展你可能很想知道你的Flash播放器的版本號是多少值得慶幸的是FlashSound JavaScript API就支持檢查播放器的版本號這是FlashSound對象的一個屬性為了得到這個數值你需要編寫以下的代碼語句

  FlashSoundplayerVersion

  這個屬性應該設置為只讀雖然你可以指定它的數值但是為播放器版本號指定一個數值久將導致一個錯誤為了得到播放器的版本號我們不必做任何事情而只需包括FlashSound JavaScript代碼即flashsoundjs移動鼠標到如圖所示的連接就可以得到播放器的版本號

  

  (圖

  以下是具體的代碼

  

  

  

  onmouseover=alert(FlashSoundplayerVersion)>播放器的版本號

  有時候你可能想限制一下你的手稿程序來確定Flash播放器的版本號你可以利用FlashSound對象的setMinPlayer()方法來實現它FlashSound JavaScript API為你提供了許多強大的功能你可以指定一個條代碼來執行當現有的播放器的版本號低於播放器的最小版本號的處理

  下面讓我們來驗證一下ifNotMinPlayer()方法是如何工作的因為最高的播放器版本號是所以我們將最小的播放器版本號設置為來測試一下這種方法這個方法ifNotMinPlayer()應該是在setMinPlayer()方法之後被使用的點擊如圖的連接可以看一下這種新方法的演示

  

  (圖

  為了設置最小的播放器版本號為我們可以使用語句setMinPlayer()並調用ifNotMinPlayer()以及帶有一個參數的函數downloadRecentPlayer()這個downloadRecentPlayer()函數會提示你下載較新版本的播放器

  以下是具體實現的代碼

  

  

  設置最小的播放器版本號 有時候在編寫一個獨立版本的手稿程序要花費許多時間所以你可能會選擇一種高於最小版本號的版本通常你可能會選擇最新的播放器版本所以就有這樣一個問題為什麼我們要處理那些老版本的播放器呢?你可以利用setMinPlayer()方法來設置最小版本號它唯一的一個參數是版本號

  下面讓我們來驗證以下setMinPlayer()是如何工作的因為最好的版本號是我們當我們設置最小的版本號為的時候播放器將不會發出聲音

  如圖所示的三行的連接會向我們展示這所有的一切第一行第一個連接示設置最小的版本號為第二個示設置播放器的最小版本號為這是就會使得播放器不會發出聲音你馬上可以試一試

  

  (圖

  以下是具體代碼

  

  var mySoundObj = new FlashSound();

  var mySoundObj = new FlashSound();

  

  

  

  onmouseover=FlashSoundsetMinPlayer();

  alert(播放器最小版本號被設置為)>

  設置播放器最小版本號為

  

  onmouseover=FlashSoundsetMinPlayer();

  alert(播放器最小版本號被設置為)>

  設置播放器最小版本號為

  

  onmouseover=mySoundObjTGotoAndPlay(/)>播放教程音樂

  

  onmouseover=mySoundObjTStopPlay(/)>暫停播放

  

  onmouseover=mySoundObjTPlay(/)>繼續播放

  

  onmouseover=alert(mySoundObjIsPlaying(/))>是否播放

  

  onmouseover=if (!mySoundObjIsPlaying()) mySoundObjTGotoAndPlay(/scaleevent start)>播放Scale音樂

  mySoundObjautostart = false;

  mySoundObjembedSWF(earsonlyswf);

  mySoundObjembedSWF(scaleswf);

  

  清除錯誤信息 清除錯誤信息在所有的編程語言中都是一個值得討論的題目通常它是一個令程序員頭痛的事情對於一個程序也許你都有這樣的感受當你編制程序的時候發現一個錯誤你一定會興奮不已或者你檢查了多遍程序還是發現不了錯誤存在的地方同樣會令你煩惱因為這是一個很嚴謹的題目 所以就讓你自己去決定了毫無疑問對於一個編程的新手來說錯誤信息是一個很重要的內容因為你需要根據這個錯誤信息來調試你的新手稿程序

  利用FlashSound JavaScript API你可以選擇是否清除錯誤信息具體是利用FlashSound 對象的muteErrorMsg屬性為了保留錯誤信息你需要將這個屬性設置為False如果想在調試階段還是將它設置為True其實缺省值就是True一旦設置為true錯誤信息就將被清除

  下面的JavaScript代碼包含了一個錯誤因為有一個變量沒有被定義

  

  我們可以為這個JavaScript錯誤選擇保留或者清除這個錯誤信息下面的手稿程序是清除錯誤信息

  

  如果要保留錯誤信息那麼手稿程序如下

  你可以點擊如圖的兩個連接來看這兩個文件的演示

  

  (圖

  具體實現保留錯誤信息的代碼如下

  

  

  具體實現清除錯誤信息的代碼如下

  

  


From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25482.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.