在 Flash 中,构建你自己的Flash Player 自定义控件

分享于 

10分钟阅读

Web开发

  繁體

介绍

本文介绍一种快速而简单的创建自定义网页控件的方法,该控件用于在 ASP.NET 页面中显示 Shockwave Flash 文件。 在文章和演示项目集中展示 Shockwave Flash ( SWF ) 文件时,基本思想适用于任何希望嵌入到 ASP.NET 2.0页面中的对象。

在不使用自定义控件的情况下编写页面完全可以编写页面,但控件可以方便地简化进程,使进程在 IDE ( 或者在运行时) 中只需将它的放置到页面上,即可将它的设置为页。

入门

开始时,打开 Visual Studio 2005 IDE并启动一个新项目。 从新项目对话框( 图 1 )的项目类型下,从"visual basic"下选择"Windows"节点,然后在右窗格中选择"web控件库"模板。 键在项目的NAME 中,然后单击"行"。

打开项目后,右键单击解决方案并单击"添加"菜单选项,然后选择"新项"。 当"添加新项"对话框出现( 图 2 ) 时,选择"web自定义控件"模板。 在选择模板之后,在 NAME 字段中输入键" embeddedobject.vb",然后单击"添加"关闭对话框。 现在可以删除当项目最初从模板初始化时创建的默认网页控件。

此时,我们应该有一个开放的web控件库项目,该项目中有一个名为" embeddedobject.vb"的web控件。 在编写这个项目的代码之前,最后一个步骤是添加一个需要的引用。 要添加这里引用,双击解决方案资源管理器中的"我的项目"icon 以打开"我的项目"。 然后,选择"引用"选项卡,然后单击"添加"按钮。 当"添加引用"对话框打开时,选择. NET 选项卡,然后搜索列表,直到找到"系统。设计"引用。 选择这里库,然后单击"行"按钮。

图 1: Visual Studio 2005新项目对话框

图 2: 添加新项目对话框

导航回" embeddedobject.vb"文件,并在文件的顶部添加 导入 下面突出显示的语句:

Imports SystemImports System.Collections.GenericImports System.ComponentModelImports System.TextImports System.WebImports System.Web.UIImports System.Web.UI.WebControlsImports System.Web.UI.Design
<DefaultProperty("Text"), 
 ToolboxData("<{0}:EmbeddedObject 
 runat="server"></{0}:EmbeddedObject>")> _PublicClass EmbeddedObject
 Inherits WebControl

现在我们可以添加使这个控制功能成为功能所必需的代码。 首先需要创建单个 private 成员变量;这个变量用于包含用户希望传递到控件的Shockwave Flash ( SWF ) 文件的路径。 要完成这里步骤,请在下面的变量声明中创建一个"声明"区域和密钥:

#Region"Declarations" 
 Private mFilePath AsString#End Region

声明变量之后,需要提供 public 属性以向控件用户公开控件属性;为了完成这里步骤,请在下面的代码中创建"属性"区域和密钥:

#Region"Properties" 
<Category("SWF Source File")> _
<Browsable(True)> _
<Description("Set path to the SWF source file.")> _
<Editor(GetType(System.Web.UI.Design.UrlEditor), _
 _ GetType(System.Drawing.Design.UITypeEditor))> _
 PublicProperty FilePath() AsStringGetReturn mFilePath
 EndGetSet(ByVal value AsString)
 mFilePath = value
 EndSetEndProperty#End Region

注意,在属性部分,代码指定一个编辑器并进一步指定指定的编辑器是URL编辑器。 在控件中添加该属性指定如何编辑该属性;在这里例中,of将在文本框的右侧显示一个省略号。 如果用户单击按钮,IDE将打开URL编辑器,允许用户使用该编辑器导航到SWF文件,并通过该编辑器的对话框设置文件路径属性。 以这种方式设置的属性将保持在用户的控制项目中。

<Editor(GetType(System.Web.UI.Design.UrlEditor), 
 _ GetType(System.Drawing.Design.UITypeEditor))> _

现在,惟一要做的就是定义控件的呈现方式。 要完成这里步骤,请创建一个"呈现"区域,并在这里区域中使用下面的代码重写 RenderContents 子区域:

#Region"Rendering"ProtectedOverridesSub RenderContents(ByVal writer _
 As System.Web.UI.HtmlTextWriter)
 TryDim sb AsNew StringBuilder
 sb.Append("<object classid=clsid:D27" & _
 "CDB6E-AE6D-11cf-96B8-444553540000")
 sb.Append("codebase=http://download.macromedia.com/pub/" & _ 
 "shockwave/cabs/flash/swflash.cab#version=5,0,2,0" & _ 
 "Width =" & Width.Value.ToString() & _
 " Height =" & Height.Value.ToString() & ">")
 sb.Append("<param name=movie value=" & FilePath.ToString() & ">")
 sb.Append("<param name=quality value=high>")
 sb.Append("<param name=BGCOLOR value=#000000>")
 sb.Append("<param name=SCALE value=showall>")
 sb.Append("<embed src=" & FilePath.ToString() & " = high")
 sb.Append("pluginspage=http://www.macromedia.com/shockwave/" & _ 
 "download/index.cgi?P1_Prod_Version=ShockwaveFlash" & _ 
 " type=application/x-shockwave-flash")
 sb.Append("Width =" & Width.Value.ToString() & "")
 sb.Append("Height =" & Height.Value.ToString() & "")
 sb.Append("bgcolor=#000000")
 sb.Append("scale= showall></embed></object>")
 writer.RenderBeginTag(HtmlTextWriterTag.Div)
 writer.Write(sb.ToString())
 writer.RenderEndTag()
 Catch ex As Exception
 writer.RenderBeginTag(HtmlTextWriterTag.Div)
 writer.Write("Custom Flash Control")
 writer.RenderEndTag()
 EndTryEndSub#End Region

在这个代码中,有一些值得注意的事情;首先,你可以看到嵌入的内容。 对象 标记被创建,并且它不需要太多的想象力来想象你可以使用这种方法嵌入任何有效的对象。 StringBuilder 从控件收集三个变量,文件路径传递给对象源,并且传递控制和宽度的高度。 对象 它的余参数在这里演示中被取消,但可以用设计时设置的额外属性替换。

已经定义的内容 对象 标记,剩下的细节是将控件放在呈现页上。 这是在 StringBuilder 定义的三行中完成的:

writer.RenderBeginTag(HtmlTextWriterTag.Div)
writer.Write(sb.ToString())
writer.RenderEndTag()

在这个例子中,HTML编写器被设置为放置一个 Div 标记。在 DivStringBuilder 中定义的对象被写入到呈现的页中,在最后一行中, Div 已经关闭。

控件现在已经完成。 在测试控件之前,重新生成项目。 一旦完成并且任何遇到的错误都被修复,就是测试控件的时候了。 若要测试该控件,请将新的网站项目添加到当前打开的web控件库项目中。 一旦创建了测试网站,就可以将测试项目设置为启动项目,然后在解决方案资源管理器中选择"设置为启动项目"菜单选项。 接下来,在网站解决方案中找到 Default.aspx 页面,右键单击该页面,然后选择"设置为起始页"菜单选项。

如果下载示例项目,可能希望从该示例网站获取两个文件,并将它们添加到网站解决方案的root 中。 这些文件名为" cybertrick.swf"和" cybertrick.txt"。 你可以通过右击解决方案资源管理器中的网站解决方案并选择"添加现有项目"来向项目中添加文件。

打开 Default.aspx 页进行编辑。 在工具箱( 它应该在最上面) 中找到新创建的控件,并将" EmbeddedObject"控件拖到页面( 图 3 ) 上。

图 3: 工具箱中的自定义控件

现在可以单击嵌入对象控件,并设置它的高度。宽度和文件路径属性。 对于这个演示,提供的SWF文件被设计为 300像素高和 600像素宽,所以设置高度和宽度属性保持 300和。 接下来,单击文件路径属性按钮打开URL编辑器对话框。 从这里,选择" cybertrick.swf"以将文件路径属性指向这里文件。

构建应用程序并运行它;你现在应该查看自定义控件( 图 4 ) 中显示的Flash 演示文稿。

图 4: 自定义控件中的Flash


控制  构建  play  FLA  播放器  Flash  
相关文章