Flash 也是网页常用的 ActiveX 插件,在本文中将继承 TBActiveX 下来撰写 TBFlash 控件,用来输出网页套用 Flash 的相关 HTML 码。
程序代码下载:ASP.NET Server Control - Day13.rar
一、网页 Flash 的原始 HTML 码
我们先观查在网页中套用 Flash 插件的原始 HTML 码,以点部落首页抬头的 Flash 原始码为例如下,其中 <object> tag 的 codebase attribute 是指 Flash 插件的下载位置及版本。
<object id="ShockwaveFlash2" height="90" width="728"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
<param value="http://files.dotblogs.com.tw/dotjum/ad/debug.swf" name="movie"/>
<param value="high" name="quality"/>
<param value="#000000" name="bgcolor"/>
<embed height="90" width="728" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" quality="high"
src="http://files.dotblogs.com.tw/dotjum/ad/debug.swf"/>
</object>
在 <object> tag 中必要的 attribute 为 classid
、
codebase
、
movie
、
width
、
height
,而
<embed> tag
的必要
attribute
为
src
、
pluginspage
、
width
、
height
,其它选择性的
attribute
可参阅以下网页。
Flash OBJECT and EMBED tag attributes
http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_12701
二、实作 TFlash 控件
了解 Flash 的原始 HTML 码后,我们就可以开始着手撰写 TBFlash 控件,想辨法来输出所需要的 HTML 码。
step1. 新增 TBFlash 控件继承至 TBActiveX
我们先在 TBActiveX 控件新增一个 CodeBase 属性,用来设定 ActiveX 插入的下载位置及版本,然后新增 TBFlash 控件继承至 TBActiveX,并在建构函式中设定 MyBase.ClassId 及 MyBase.CodeBase 属性。
Public Class TBFlash
Inherits TBActiveX
''' <summary>
''' 建構函式。
''' </summary>
Sub New()
MyBase.ClassId = "D27CDB6E-AE6D-11CF-96B8-444553540000"
MyBase.CodeBase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"
End Sub
End Class
step2. 加入相关属性
在 TBFlash 加入 MovieUrl 及 Quality 属性,MovieUrl 为 Flash 档案来源,Quality 为影音质量。
step3. 输出 Flash 相关参数
覆写 CreateChildControls 方法,输出 MovieUrl 及 Quality 属性对应的参数,以及在 Params 集合属性设定的参数。
''' <summary>
''' 加入 MediaPlayer 參數。
''' </summary>
''' <param name="Name">參數名稱。</param>
''' <param name="Value">參數值。</param>
Private Sub AddParam(ByVal Name As String, ByVal Value As String)
Dim oParam As TBActiveXParam
oParam = New TBActiveXParam(Name, Value)
Me.Params.Add(oParam)
End Sub
''' <summary>
''' 建立 Embed 標記。
''' </summary>
Private Function CreateEmbed() As HtmlControls.HtmlGenericControl
Dim oEmbed As HtmlControls.HtmlGenericControl
Dim oParam As TBActiveXParam
oEmbed = New HtmlControls.HtmlGenericControl()
oEmbed.TagName = "embed"
oEmbed.Attributes("src") = Me.ResolveClientUrl(Me.MovieUrl)
oEmbed.Attributes("pluginspage") = "http://www.macromedia.com/go/getflashplayer"
oEmbed.Attributes("height") = Me.Height.ToString
oEmbed.Attributes("width") = Me.Width.ToString
'Embed 的 Attributes 加入 Params 集合屬性的設定
For Each oParam In Me.Params
If oParam.Name <> "movie" Then
oEmbed.Attributes(oParam.Name) = oParam.Value
End If
Next
Return oEmbed
End Function
''' <summary>
''' 建立子控制項。
''' </summary>
Protected Overrides Sub CreateChildControls()
Dim oEmbed As HtmlControls.HtmlGenericControl
'加入 movie 參數
AddParam("movie", Me.ResolveClientUrl(Me.MovieUrl))
'加入 quality 參數
If Me.Quality <> EQuality.NotSet Then
AddParam("quality", Me.Quality.ToString.ToLower)
End If
MyBase.CreateChildControls()
oEmbed = CreateEmbed()
Me.Controls.Add(oEmbed)
End Sub
三、测试程序
在页面拖曳 TBFlash 控件,设定 MovieUrl 及 Quality 属性,若有需要加入其它参数,可自行设定 Params 集合属性。执行程序就可以在页面上看到呈现出来的 Flash。
<bee:TBFlash ID="TBFlash1" runat="server" Height="90px"
MovieUrl="http://files.dotblogs.com.tw/dotjum/ad/debug.swf" Quality="High"
Width="728px">
</bee:TBFlash>
备注:本文同步发布于「第一届iT邦帮忙铁人赛」,如果你觉得这篇文章对您有帮助,记得连上去推鉴此文增加人气 ^^
http://ithelp.ithome.com.tw/question/10012267