Rich Internet Application 是 Web 2.0 中的新時髦詞,並且就 Web 2.0 的實質而言,一個關鍵組件就是 Adobe Flash。瞭解如何將 Flash 動畫整合到應用程式中,並使用 Ming 庫動態產生 Flash 動畫。
Web 2.0 引入了 Rich Internet Application。但 Rich Internet Application 的含義是什嗎?通常,它意味著嚮應用程式中添加具有高度響應能力的交易操作。具體來說,它意味著可以即時更改頁面中的小組件、Web 表單和報告,而無需從伺服器中檢索新頁面。
一種用於構建 Rich Internet Application(RIA)的方法就是使用動態超文字標記語言(Dynamic HTML,DHTML),它是 Ajax、JavaScript、層疊樣式表(Cascading Style Sheet,CSS)和 HTML 的組合(請參閱 參考資料)。但是 DHTML 並不是向 Web 應用程式中添加互動操作的惟一方法。另一種重要方法是使用 Adobe Flash Player,使用它為 Web 網站添加互動操作已經有十年的曆史。
第一版的 Flash 曾是用於建立動畫圖片的工具,而最新版本的 Flash 已經可以託管一個完整的介面,可用於控制 Web 服務訪問並使用 ECMAScript(JavaScript 的正式版本)來提供完整的指令碼支援。
瞭解 Flash
Flash Player 是整合到運行 Microsoft® Windows®、Mac OS X 和 Linux® 的電腦的 網頁瀏覽器中的一個外掛程式。截至本文完稿時,最新版本的 Flash Player 是 V8。它是可以免費獲得的,大多數瀏覽器都附帶安裝了此外掛程式。它十分流行並且具有優秀的客戶機滲透力 —— 而這種滲透力隨著 YouTube 和 Google Video 這類服務的出現得到了提高,這些服務都使用 Flash 顯示視頻流。
Flash Player 只是天平的一端。要發揮作用,Flash Player 還需要使用一個 Flash 動畫。此類動畫通常是使用一種 Flash 的開發工具編譯的檔案,其副檔名為 .swf。但正如您將在本文中看到的那樣,還可以使用 Ming 庫用幾乎與動態建立圖片相同的方法來動態構建 .swf 檔案,並在 Web 服務器上繪製圖形。Ming 庫利用由 PHP 代碼構建的對象和方法在新的 .swf 檔案中構建作業碼。
您可以通過兩種方法中的任意一種方法來查看 Web 網站中的 .swf 檔案。第一種方法只需導航到 .swf 檔案的 URL。這樣做將把 Web 服務器的整個內容地區替換為 Flash 動畫。此方法便於進行調試,但主要的用法還是將動畫嵌入到 HTML Web 頁面的 <object> 標記中。該 <object> 標記然後再通過 URL 引用 SWF 動畫。<object> 方法的優點在於您可以把動畫放在頁面的任意位置,並可通過JavaScript 代碼進行動態控制,就像處理頁面中的任何其他元素一樣。
清單 1 顯示的是一個引用 SWF 動畫的 <object> 標記的樣本。
清單 1. 嵌入式 Flash 動畫
以下為引用的內容: <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab# version=6,0,40,0" WIDTH="550" HEIGHT="400"> <PARAM NAME="movie" VALUE=http://chinaz.com/Program/PHP/"lines.swf"> <EMBED src=http://chinaz.com/Program/PHP/"lines.swf" WIDTH="550" HEIGHT="400" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"> </EMBED> </OBJECT> |
這組標記將引用一個名為 lines.swf 的動畫。內部的 <embed> 標記用於確保 Flash 動畫可以在安裝了外掛程式的各種瀏覽器中播放。
標記還把 Flash Player 的高度和寬度分別指定為 550 像素和 400 像素。非常值得注意的是,Flash 動畫中的圖形都是基於向量的,這意味著當您使用 Flash 命令繪製線條和文本時,那些元素都被儲存為座標並且按照匹配顯示地區的比例進行縮放。如您所見,Flash 動畫有自己的座標系統,您可以按照適合自己的方法使代碼儘可能整潔。
Ming
本文中提供的使用 Flash 動畫的第一種方法是使用 Ming 庫動態產生它們。Ming 庫是一個 PHP 庫,其中有一組映射到 SWF 動畫中的資料類型的對象:子圖形、圖形、文本、位元影像等等。我將不討論如何構建和安裝 Ming,因為其操作是特定於平台的而且並不特別簡單(請參閱 參考資料)。在本文中,我使用了先行編譯的擴充 php_ming.dll 庫用於 Windows 版本的 PHP。
必須指出的是,Ming 仍處於開發階段。截至本文完稿時,庫的版本是 V0.4,並且較老版本中的一些命令在最新版本中不能使用。我使用了 V0.4 撰寫本文,因此,要使用這段代碼,您需要使用這個版本。
清單 2 顯示了使用 Ming 庫實現的 HelloWorld 樣本。
清單 2. Hello.php
以下為引用的內容: <?php $f = new SWFFont( '_sans' );
$t = new SWFTextField(); $t->setFont( $f ); $t->setColor( 0, 0, 0 ); $t->setHeight( 400 ); $t->addString( 'Hello World' );
$m = new SWFMovie(); $m->setDimension( 2500, 800 ); $m->add( $t );
$m->save( 'hello.swf' ); ?> |
在命令列中運行這段代碼將組建檔案 hello.swf。當我在 網頁瀏覽器中開啟該檔案時,看到了圖 1 所示的結果。
圖 1. 使用 Ming 的 HelloWorld 樣本
回過頭來查看這段代碼,我做的第一件事是建立指向一個內建字型(_sans)的指標,然後建立文字欄位,設定字型、顏色和大小,最後為其提供一些常值內容(“Hello World”)。再接下來建立了一個 SWFMovie 對象並設定其尺寸。最後,向動畫中添加了文本元素並將動畫儲存到檔案中。
共3頁: 上一頁 1 [2] [3] 下一頁