ASP生成動(dòng)態(tài)flash的工具與介紹
編者按:編程技術(shù)的發(fā)展真是日新月異。通過(guò)ASP等程序動(dòng)態(tài)生成HTML網(wǎng)頁(yè)似乎已不能算是最新科技。Macromedia公司的Flash技術(shù)自推出以來(lái),已有2億4千8百萬(wàn)用戶(hù),制作flash網(wǎng)站已是流行趨勢(shì)。就像HTML頁(yè)面可以用ASP動(dòng)態(tài)生成 一樣,F(xiàn)lash 動(dòng)畫(huà)也可以使用支持 COM Automation的語(yǔ)言(如Borland Delphi,ASP, Visual Basic 等)動(dòng)態(tài)生成。該文詳細(xì)介紹了如何應(yīng)用 Bukoo Flash Objects實(shí)現(xiàn)Flash網(wǎng)頁(yè)的交互應(yīng)用,具有很強(qiáng)的實(shí)用價(jià)值。值得編程追新族們一覽。
一、概述
筆者應(yīng)用 Microsoft Visual C++ 中的 ATL ,將 SWF SDK 中的高級(jí)類(lèi)封裝成了 COM Objects ,以便使更多的支持COM Automation的編程語(yǔ)言能夠生成 Flash 動(dòng)畫(huà)。這些 COM Objects 被命名為 Bukoo Flash Objects 。本文不是描述 Bukoo Flash Objects 的開(kāi)發(fā)方法和過(guò)程,而是介紹如何使用它。
二、下載安裝
Bukoo Flash Objects 可以在以下網(wǎng)址下載: http://www.delphibbs.com/bukoo 。下載的文件為 Swfobjs.zip ,解壓后除了文檔和范例, Bukoo Flash Objects 就在 swfobjs.dll 中,使用 regsvr32 swfobjs.dll 安裝 Bukoo Flash Objects ;使用 Regsvr32 /Uswfobjs.dll 卸除 Bukoo Flash Objects 。
三、基本對(duì)象及其屬性
Bukoo Flash Objects 總共包括三個(gè) COM Objects : SwfMovie 、 SwfObject 和 SwfAction 。
通過(guò)創(chuàng)建這三個(gè)對(duì)象來(lái)生成 Flash 動(dòng)畫(huà)的過(guò)程是:創(chuàng)建 SwfMovie 動(dòng)畫(huà)對(duì)象;設(shè)置動(dòng)畫(huà)屬性;在幀中創(chuàng)建、插入、刪除 SwfObject 元素對(duì)象和 SwfAction 動(dòng)作對(duì)象;最后輸出 Flash 動(dòng)畫(huà)。 下面是這三個(gè)對(duì)象應(yīng)用方法介紹。
1 .SwfMovie 動(dòng)畫(huà)對(duì)象
SwfMovie 對(duì)象代表即將生成的 Flash 動(dòng)畫(huà),首先需要設(shè)置的是動(dòng)畫(huà)的大小, SwfMovie 對(duì)象的 SetSize 方法用于設(shè)置動(dòng)畫(huà)的尺寸。要注意Swf中坐標(biāo)單位是 twip ,即 1/1440 英寸,或者說(shuō)是 1/20 像素,例如動(dòng)畫(huà)尺寸為 400 x 300 像素,即為 8000 x 6000 twip 。必須這樣調(diào)用: setsize(8000, 6000) 。
setFrameRate (12) ,就是動(dòng)畫(huà)每秒放 12 幀,每秒幀速高,動(dòng)畫(huà)平滑,但是 Swf文件會(huì)變大,影響下載速度,故需要權(quán)衡利弊。用 GotoFrame 方法定位到指定幀,然后插入元素或者動(dòng)作, SwfMovie 對(duì)象自動(dòng)增加幀數(shù)到調(diào)用 GotoFrame 方法的最大數(shù)目。
插入和刪除元素的方法是 AddObject , RemoveObject ,插入動(dòng)作的方法是 AddAction 。
WriteMovie 方法就是按照指定的文件名生成 sWF 文件。 SwfMovie 的 Content 屬性是 VARIANT 類(lèi)型,也可以用 AsP 中的 response.binarywite 輸出到網(wǎng)頁(yè)中。
2 . SwfObject 元素對(duì)象
SwfObject 像是一個(gè)千面人,創(chuàng)建這個(gè)對(duì)象以后,可以用其 MakePolygon 方法使其變成多邊形;用 MakeRectangle 方法變成矩形;用 MakeOval 方法變成橢圓形;用 MakeCircle 方法變成圓形;用 MakePitcure 方法變成 Jpeg 圖像;用 MakeButton 方法變成按鈕;用 Makesound 方法變成聲音;用 MakeFont 方法變成字體;用 MakeText 方法變成文字等等。sWF 中的文字處理比較特殊,需要先將 TrueType 字體轉(zhuǎn)換成字體對(duì)象,再用字體對(duì)象生成文字。
SwfObject 的 Translate 方法用于平移元素,坐標(biāo)定位 twip ; Rotate 方法用于旋轉(zhuǎn)元素; scale 用于縮放元素。注意旋轉(zhuǎn)和縮放方法的參數(shù)單位也比較特殊,稱(chēng)為 Fixed ,簡(jiǎn)單的換算方法是乘以 65536 ,例如旋轉(zhuǎn) 10 度,需要用 10× 65536 ,放大 2倍,需要用 2×65536 ,依次類(lèi)推。 SwfObject 的 setLineWidth 方法用于設(shè)置對(duì)象邊框線的寬度,單位 twip ; setLineColorA 方法用于設(shè)置對(duì)象邊框線的顏色,它有四個(gè)參數(shù),分別代表紅、綠、藍(lán)和 Alpha 。Alpha 參數(shù)規(guī)定顏色的透明程度。 Alpha=255 不透明,完全覆蓋下面的圖形; Alpha=0 全透明,讓下面的圖形全部透出來(lái),自己就看不見(jiàn)了。
SwfObject 的 setNoFill 方法用于設(shè)置對(duì)象不填充, setsolidFill 用于設(shè)置對(duì)象用單色填充,也可以用 alpha 規(guī)定透明程度。 setLinearFill 方法用于設(shè)置對(duì)象從一個(gè)顏色到另外一個(gè)顏色逐漸線性過(guò)渡, setLinearFillCenter 方法用于設(shè)置顏色線性過(guò)渡的中心點(diǎn)。setRadialFill 方法用于設(shè)置對(duì)象從一個(gè)顏色到另外一個(gè)顏色放射性逐漸過(guò)渡。 setRadialFillCenter 方法用于設(shè)置顏色放射性過(guò)渡的中心點(diǎn)。 SwfObject 變成按鈕的方法的過(guò)程稍微復(fù)雜些,因?yàn)榘粹o需要四個(gè)圖形,分別代表按鈕普通狀態(tài)、鼠標(biāo)劃過(guò)狀態(tài)、鼠標(biāo)下落狀態(tài)和提示狀態(tài)的圖形。按鈕被按動(dòng)后將激發(fā)的動(dòng)作,需要用 QueueEvent 方法加入動(dòng)作對(duì)象。
3 . SwfAction 動(dòng)作對(duì)象
目前, Bukoo Flash Objects 支持五個(gè)動(dòng)作:停止動(dòng)畫(huà)、播放動(dòng)畫(huà)、跳轉(zhuǎn)到某個(gè)幀、導(dǎo)航到 URL ,以及在使某個(gè) html frame 導(dǎo)航到 URL 。與 SwfObject 一樣, SwfAction 對(duì)象創(chuàng)建后,可以用 MakeActionstop 、 MakeActionPlay 、 MakeActionGotoFrame 、 MakeActionGotoURL 以及 MakeActionGotoURLTarget 變成相應(yīng)的動(dòng)作。
四、 ASP 范例
這個(gè) ASP 程序( sample1.asp )將動(dòng)態(tài)創(chuàng)建 Flash 動(dòng)畫(huà),包含放射性填充背景、一個(gè)自右向左移動(dòng)的文字和三個(gè)擴(kuò)張的圓形,Swf文件將以二進(jìn)制流的方式被寫(xiě)入到瀏覽器中。 sample1.asp源代碼。
如果需要將動(dòng)態(tài)生成的 Flash 動(dòng)畫(huà)插入其他網(wǎng)頁(yè),可以用參照 dispswf.asp 來(lái)做。
兩個(gè) ASP 配合使用的 URL 為:
http://localhost/swf/dispswf.asp?swf_url=sample1.asp&width=300&height=50
五、進(jìn)一步討論
通過(guò) COM 技術(shù), Bukoo Flash Objects 在VC++的SWF SDK和VC++ 以外的其它程序設(shè)計(jì)語(yǔ)言或者環(huán)境之間架設(shè)了橋梁,使得利用 ASP 、Delphi 和其他語(yǔ)言能夠很方便地生成Flash 動(dòng)畫(huà)。
但是,SWF SDK 中包含了許多錯(cuò)誤 (bug) ,下載和使用SWF SDK 的讀者需要特別注意,例如,沒(méi)有將 TrueType 字體轉(zhuǎn)換為 Flash 字體的功能、對(duì)象的幾何變換公式是錯(cuò)誤的等等。這些問(wèn)題在 openswf.org 和 flashkit.com 的討論組中有很多討論。筆者在制作 Bukoo Flash Objects 時(shí),已經(jīng)盡量改了一批類(lèi)似的缺陷和錯(cuò)誤。估計(jì)難免還有遺漏之處,這將大大影響 Bukoo Flash Objects 的質(zhì)量。隨著 Flash 5 的正式發(fā)布,預(yù)計(jì)SWF 5 的SDK不久也會(huì)推出,希望它能修正其中的 bug。屆時(shí),筆者將用新的 SDK 重新編譯 Bukoo Flash Objects 。
下一個(gè)版本的 Bukoo Flash Objects 計(jì)劃將增加對(duì)中文、對(duì)嵌入動(dòng)畫(huà) (sprite) 和對(duì)變形 (morph) 的支持。
歡迎讀者對(duì) Bukoo Flash Objects 提出建議和批評(píng)。
相關(guān)文章
P3P 和 跨域 (cross-domain) cookie 訪問(wèn)(讀取和設(shè)置)
在IE 里面跨域去設(shè)置 cookie跨域的實(shí)現(xiàn),嘗試了n中方法都不行,查了一下資料,可以通過(guò)設(shè)置header中的p3p值來(lái)實(shí)現(xiàn),真不錯(cuò):)2009-06-06ASP中Session技巧 默認(rèn)過(guò)期時(shí)間為20分鐘
寫(xiě)過(guò)稍微大型一點(diǎn) ASP 的人都知道,Session 這個(gè)對(duì)象真是好用,它可以用來(lái)記錄使用者私有的資料變量,既安全又方便。但是你真的知道 Session 的運(yùn)作原理嗎?2012-08-08在ASP中不用模板生成HTML靜態(tài)頁(yè)直接生成.html頁(yè)面
有沒(méi)有辦法不用模板,如一個(gè)正常的htmer.asp頁(yè)面,直接生成為htmer.html頁(yè)面呢?當(dāng)然是可以的,而且非常簡(jiǎn)單,今天就教大家在ASP中不用模板生成HTML靜態(tài)頁(yè)的方法2014-09-09ASP無(wú)組件分頁(yè)實(shí)現(xiàn)思路及代碼
無(wú)組件分頁(yè)不可思議吧,看一看本文的效果就知道了,下面與大家分享下具體的實(shí)現(xiàn),感興趣的朋友可以參考下哈2013-05-05