天天看點

如果你還在為插入Flash Object 苦惱,快來試試這個!

大家在項目中常常要插入Flash Object,一般一個FlashObject在HTML中代碼是這樣的:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"      
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8"      
width="320" height="220"      
id="theMediaPlayer">      
<param name=movie value="mediaplayer.swf">      
<param name=quality value="high">      
<param name=bgcolor value="#FFFFFF">      
<param name=allowFullScreen value="false">      
<param name=swLiveConnect value="true">      
<param name=allowScriptAccess value="sameDomain">      
<param name="FlashVars" value="file=mixmediaplaylist.xml&width=320&height=220&displaywidth=320&displayheight=200&autostart=true&backcolor=0xFFFFFF">      
<embed type="application/x-shockwave-flash"       
pluginspage="http://www.macromedia.com/go/getflashplayer"       
width="320" height="220" bgcolor="#FFFFFF"       
name="theMediaPlayer"      
src="mediaplayer.swf"      
flashvars="file=mixmediaplaylist.xml&width=320&height=220&displaywidth=320&displayheight=200&autostart=true&backcolor=0xFFFFFF">      
</embed>      
</object>      

OBJECT和EMBED标簽的問題

看起來似乎挺複雜,首先是一個<object>對象,接着是很多的param,完了又出來一個<embed>對象,跟着一大堆的參數。其實這樣寫是因為相容性的問題。OBJECT标簽是用于windows平台的IE浏覽器的,而EMBED是用于windows和Macintosh平台下的Netscape Navigator浏覽器以及Macintosh平台下的IE浏覽器。windows平台的IE利用Activex控件來播放flash而其它的浏覽器則使用Netscape插件技術來播放flash。

具體可以參考下面的文檔:
  1. Flash OBJECT和EMBED标簽詳解
  2. Flash OBJECT and EMBED tag attributes

  3. Adobe 的官方文檔: Macromedia Flash OBJECT and EMBED tag syntax

參考文檔我們就可以通過各種方法向客戶段按照正确的格式輸出FlashObject的代碼了,但字元串的拼接操作枯燥又容易出錯,代碼可讀性還不好,有什麼更好的辦法嗎?

在這裡要特别提一下的就是FlashObject的FlashVar參數,很多應用都要靠着這個參數傳入大量有複雜資料格式的資料對(pair),建構這個參數往往是最麻煩的。

關于FlashVar: 

Using FlashVars to pass variables to a SWF

使用<swfobject>

如果你還在為插入Flash Object 苦惱,快來試試這個!

SWFObject是一種易用的、符合标準的在網頁中嵌入flash對象的方法,你隻需要在網頁中引用一個小巧的js檔案。

使用SWFObject就可以避免因為不熟悉Flash Object複雜的文法和選項帶來的浏覽器不相容的問題。

使用<swfobject>的大體代碼示範如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">      
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">      
<head>      
<title>SWFObject v2.0 - step 3</title>      
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />      
<script type="text/javascript" src="swfobject.js"></script>      
<script type="text/javascript">      
swfobject.registerObject("myId", "9.0.0", "expressInstall.swf");      
</script>      
</head>      
<body>      
<div>      
<object id="myId" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="780" height="420">      
<param name="movie" value="myContent.swf" />      
<!--[if !IE]>–>      
<object type="application/x-shockwave-flash" data="myContent.swf" width="780" height="420">      
<!–<![endif]–>      
<p>Alternative content</p>      
<!–[if !IE]>–>      
</object>      
<!–<![endif]–>      
</object>      
</div>      
</body>      
</html>      

SWFObject 首頁:

http://code.google.com/p/swfobject/

對于FlashVar參數的傳入,SWFObject提供了專門的函數,用起來非常友善,代碼可讀性也強了。

Opensource 的 swfobject .net control

下載下傳位址:

http://www.arjones.net/opensource/swfobject.net/

這還有一個:

http://www.junasoftware.com/servercontrols/swfobject.net.aspx

商業Flash object control

實際上,對于ASP.NET的開發者,使用<swfobject>也還是有很多不友善的地方,沒有強資料類型,參數傳入都要轉為字元串,還有做一些拼接的工作,代碼還是不優雅。有沒有更好的辦法呢?

ASPNetFlash WebControl

如果你還在為插入Flash Object 苦惱,快來試試這個!

ASPNetFlash WebControl 可以讓你輕松的把一個Adobe Flash檔案插入到你的ASP.NET web forms裡面。

ASPNetFlash的網址:

http://www.aspnetflash.com/aspnetflash_Download_Free_Trial.aspx

下載下傳安裝後的效果:

如果你還在為插入Flash Object 苦惱,快來試試這個!

真的不錯,基本的屬性設定,還有對FlashVar的資料綁定支援。

http://www.arjones.net/opensource/swfobject.net/

如果你還在為插入Flash Object 苦惱,快來試試這個!

參考文檔:

List Apart上的一篇文章:

http://www.alistapart.com/articles/flashembedcagematch/

繼續閱讀