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 为 classidcodebasemoviewidthheight,而 <embed> tag 的必要 attribute srcpluginspagewidthheight,其它选择性的 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 为影音质量。

 

image

 

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>

 

image

 

备注:本文同步发布于「第一届iT邦帮忙铁人赛」,如果你觉得这篇文章对您有帮助,记得连上去推鉴此文增加人气 ^^
http://ithelp.ithome.com.tw/question/10012267

posted on 2008-10-14 13:29  jeff377  阅读(800)  评论(0编辑  收藏  举报