將載入的媒體當做資料加以存取Flash Player 9 以及更新的版本,Adobe AIR 1.0 以及更新的版本 若要存取載入資料,請使用 BitmapData.draw() 和 SoundMixer.computeSpectrum() 方法。透過不同安全執行程序載入的媒體所呈現或播放的圖形或音效物件,預設您無法從中取得像素資料或音效資料。不過,您可以使用下列方法,授與跨安全執行程序界限存取這類資料的權限:
下列各節會提供有關存取點陣圖、聲音和視訊資料的詳細資訊。 存取點陣圖資料BitmapData 物件的 draw() 方法可以讓您將任何顯示物件的目前顯示像素繪製至 BitmapData 物件。這可以包括 MovieClip 物件、Bitmap 物件,或任何顯示物件。若要 draw() 方法繪製像素至 BitmapData 物件,必須符合下列條件:
如果不符合這些條件,就會擲回 SecurityError 例外。 當您使用 Loader 類別的 load() 方法載入影像時,可以指定 context 參數 (LoaderContext 物件)。如果您將 LoaderContext 物件的 checkPolicyFile 屬性設定為 true,Flash Player 就會檢查載入聲音的來源伺服器是否有 URL 原則檔。如果有原則檔,而且此檔案授與載入 SWF 檔所在網域的權限,則該檔案就可以存取 Bitmap 物件中的資料,否則就會拒絕存取。 您也可以在經由文字欄位之 <img> 標籤載入的影像中,指定 checkPolicyFile 屬性。如需詳細資訊,請參閱使用文字欄位中的 <img> 標籤載入 SWF 檔和影像。 存取聲音資料下列與聲音相關的 ActionScript 3.0 API 有安全性限制:
每一個聲音檔都有兩種相關聯的安全執行程序,也就是內容安全執行程序和擁有者安全執行程序:
當您使用 Sound 類別的 load() 方法載入聲音時,可以指定 context 參數 (SoundLoaderContext 物件)。如果您將 SoundLoaderContext 物件的 checkPolicyFile 屬性設為 true,執行階段就會檢查載入聲音的來源伺服器是否有 URL 原則檔。如果具有原則檔,而且檔案允許載入程式碼的網域,則該檔案就可以存取 Sound 物件的 id 屬性,否則就無法存取。此外,設定 checkPolicyFile 屬性也可以為載入的聲音啟用 SoundMixer.computeSpectrum() 方法。 您可以使用 SoundMixer.areSoundsInaccessible() 方法,查出呼叫 SoundMixer.stopAll() 方法是否會停止所有聲音,因為呼叫者無法存取一個或多個聲音擁有者。 呼叫 SoundMixer.stopAll() 方法會停止擁有者與 stopAll() 的呼叫者位於相同安全執行程序中的聲音;也會停止由 (已呼叫 Security.allowDomain() 方法,允許由呼叫 stopAll() 方法的 SWF 檔網域存取之) SWF 檔開始播放的聲音。任何其它聲音都不會停止,只要呼叫 SoundMixer.areSoundsInaccessible() 方法就能顯示這些聲音的存在。 呼叫 computeSpectrum() 方法需要播放的每一個聲音都與呼叫該方法的物件之安全執行程序相同,或是其來源已允許呼叫者的安全執行程序存取,否則就會擲回 SecurityError 例外。若聲音是從內嵌於 SWF 檔中元件庫之聲音載入,則會在被載入端 SWF 檔中呼叫 Security.allowDomain() 方法授與權限。若是從 SWF 檔以外來源載入聲音 (源自載入的 MP3 檔或從視訊檔),在來源伺服器上的 URL 原則檔便會授與權限,以存取所載入之媒體中的資料。 如需詳細資訊,請參閱作者 (開發人員) 控制和網站控制 (原則檔)。 若要從 RTMP 串流存取聲音資料,您必須允許伺服器上的存取權限。使用伺服器端 ActionScript Client.audioSampleAccess 屬性,允許存取 Flash Media Server 上的特定目錄。如需詳細資訊,請參閱伺服器端 ActionScript 語言參考。 存取視訊資料您可以使用 BitmapData.draw() 方法,擷取目前視訊影格中的像素資料。 總共有兩種不同的視訊:
若要使用 BitmapData.draw() 方法從 RTMP 串流取出執行階段圖形,則您必須允許伺服器上的存取權限。使用伺服器端 ActionScript Client.videoSampleAccess 屬性,允許存取 Flash Media Server 上的特定目錄。如需詳細資訊,請參閱伺服器端 ActionScript 語言參考。 當您以漸進式視訊做為 source 參數呼叫 BitmapData.draw() 方法時,BitmapData.draw() 的呼叫者必須與 FLV 檔位於相同的安全執行程序,或是 FLV 檔的伺服器必須具有授與呼叫 SWF 檔之網域存取權限的原則檔。您可以將 NetStream 物件的 checkPolicyFile 屬性設定為 true,要求下載原則檔。 |
|