ASP產生動態flash的工具與介紹

來源:互聯網
上載者:User

編者按:編程技術的發展真是日新月異。通過ASP等程式動態產生HTML網頁似乎已不能算是最新科技。Macromedia公司的Flash技術自推出以來,已有2億4千8百萬使用者,製作flash網站已是流行趨勢。就像HTML頁面可以用ASP動態產生 一樣,Flash 動畫也可以使用支援 COM Automation的語言(如Borland Delphi,ASP, Visual Basic 等)動態產生。該文詳細介紹了如何應用 Bukoo Flash Objects實現Flash網頁的互動應用,具有很強的實用價值。值得編程追新族們一覽。

  一、概述

  筆者應用 Microsoft Visual C++ 中的 ATL ,將 SWF SDK 中的進階類封裝成了 COM Objects ,以便使更多的支援COM Automation的程式設計語言能夠產生 Flash 動畫。這些 COM Objects 被命名為 Bukoo Flash Objects 。本文不是描述 Bukoo Flash Objects 的開發方法和過程,而是介紹如何使用它。

  二、下載安裝

  Bukoo Flash Objects 可以在以下網址下載:   http://www.delphibbs.com/bukoo 或者 http://www.geocities.com/yiyisun/bukoo 。下載的檔案為 Swfobjs.zip ,解壓後除了文檔和範例, Bukoo Flash Objects 就在 swfobjs.dll 中,使用 regsvr32 swfobjs.dll 安裝 Bukoo Flash Objects ;使用 Regsvr32 /Uswfobjs.dll 卸載 Bukoo Flash Objects 。

  三、基本對象及其屬性

  Bukoo Flash Objects 總共包括三個 COM Objects : SwfMovie 、 SwfObject 和 SwfAction 。

  通過建立這三個對象來產生 Flash 動畫的過程是:建立 SwfMovie 動畫對象;設定動畫屬性;在幀中建立、插入、刪除 SwfObject 元素對象和 SwfAction 動作對象;最後輸出 Flash 動畫。   下面是這三個對象應用方法介紹。

  1 .SwfMovie 動畫對象

  SwfMovie 對象代表即將產生的 Flash 動畫,首先需要設定的是動畫的大小, SwfMovie 對象的 SetSize 方法用於設定動畫的尺寸。要注意Swf中座標單位是 twip ,即 1/1440 英寸,或者說是 1/20 像素,例如動畫尺寸為 400 x 300 像素,即為 8000 x 6000 twip 。必須這樣調用: setsize(8000, 6000) 。

  setFrameRate (12) ,就是動畫每秒放 12 幀,每秒幀速高,動畫平滑,但是 Swf檔案會變大,影響下載速度,故需要權衡利弊。用 GotoFrame 方法定位到指定幀,然後插入元素或者動作, SwfMovie 對象自動增加幀數到調用 GotoFrame 方法的最大數目。

  插入和刪除元素的方法是 AddObject , RemoveObject ,插入動作的方法是 AddAction 。

  WriteMovie 方法就是按照指定的檔案名稱產生 sWF 檔案。 SwfMovie 的 Content 屬性是 VARIANT 類型,也可以用 AsP 中的 response.binarywite 輸出到網頁中。

  2 . SwfObject 元素對象

  SwfObject 像是一個千面人,建立這個對象以後,可以用其 MakePolygon 方法使其變成多邊形;用 MakeRectangle 方法變成矩形;用 MakeOval 方法變成橢圓形;用 MakeCircle 方法變成圓形;用 MakePitcure 方法變成 Jpeg 映像;用 MakeButton 方法變成按鈕;用 Makesound 方法變成聲音;用 MakeFont 方法變成字型;用 MakeText 方法變成文字等等。sWF 中的文文書處理比較特殊,需要先將 TrueType 字型轉換成字型對象,再用字型對象產生文字。

   SwfObject 的 Translate 方法用於平移元素,座標定位 twip ; Rotate 方法用於旋轉元素; scale 用於縮放元素。注意旋轉和縮放方法的參數單位也比較特殊,稱為 Fixed ,簡單的換算方法是乘以 65536 ,例如旋轉 10 度,需要用 10× 65536 ,放大 2倍,需要用 2×65536 ,依次類推。   SwfObject 的 setLineWidth 方法用於設定對象邊框線的寬度,單位 twip ; setLineColorA 方法用於設定對象邊框線的顏色,它有四個參數,分別代表紅、綠、藍和 Alpha 。Alpha 參數規定顏色的透明程度。 Alpha=255 不透明,完全覆蓋下面的圖形; Alpha=0 全透明,讓下面的圖形全部透出來,自己就看不見了。

  SwfObject 的 setNoFill 方法用於設定對象不填充, setsolidFill 用於設定對象用單色填充,也可以用 alpha 規定透明程度。 setLinearFill 方法用於設定對象從一個顏色到另外一個顏色逐漸線性過渡, setLinearFillCenter 方法用於設定顏色線性過渡的中心點。setRadialFill 方法用於設定對象從一個顏色到另外一個顏色放射性逐漸過渡。 setRadialFillCenter 方法用於設定顏色放射性過渡的中心點。   SwfObject 變成按鈕的方法的過程稍微複雜些,因為按鈕需要四個圖形,分別代表按鈕普通狀態、滑鼠划過狀態、滑鼠下落狀態和提示狀態的圖形。按鈕被按動後將激發的動作,需要用 QueueEvent 方法加入動作對象。

  3 . SwfAction 動作對象

  目前, Bukoo Flash Objects 支援五個動作:停止動畫、播放動畫、跳轉到某個幀、導航到 URL ,以及在使某個 html frame 導航到 URL 。與 SwfObject 一樣, SwfAction 對象建立後,可以用 MakeActionstop 、 MakeActionPlay 、 MakeActionGotoFrame 、 MakeActionGotoURL 以及 MakeActionGotoURLTarget 變成相應的動作。

  四、 ASP 範例

  這個 ASP 程式( sample1.asp )將動態建立 Flash 動畫,包含放射性填充背景、一個自右向左移動的文字和三個擴張的圓形,Swf檔案將以二進位流的方式被寫入到瀏覽器中。 sample1.asp原始碼。

  如果需要將動態產生的 Flash 動畫插入其他網頁,可以用參照 dispswf.asp 來做。

  兩個 ASP 配合使用的 URL 為:

  http://localhost/swf/dispswf.asp?swf_url=sample1.asp&width=300&height=50

  五、進一步討論

  通過 COM 技術, Bukoo Flash Objects 在VC++的SWF SDK和VC++ 以外的其它程式設計語言或者環境之間架設了橋樑,使得利用 ASP 、Delphi 和其他語言能夠很方便地產生Flash 動畫。

  但是,SWF SDK 中包含了許多錯誤 (bug) ,下載和使用SWF SDK 的讀者需要特別注意,例如,沒有將 TrueType 字型轉換為 Flash 字型的功能、對象的幾何變換公式是錯誤的等等。這些問題在 openswf.org 和 flashkit.com 的討論群組中有很多討論。筆者在製作 Bukoo Flash Objects 時,已經盡量改了一批類似的缺陷和錯誤。估計難免還有遺漏之處,這將大大影響 Bukoo Flash Objects 的品質。隨著 Flash 5 的正式發布,預計SWF 5 的SDK不久也會推出,希望它能修正其中的 bug。屆時,筆者將用新的 SDK 重新編譯 Bukoo Flash Objects 。

  下一個版本的 Bukoo Flash Objects 計劃將增加對中文、對嵌入動畫 (sprite) 和對變形 (morph) 的支援。

  歡迎讀者對 Bukoo Flash Objects 提出建議和批評。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.