FlashMovie WebControl

分享于 

17分钟阅读

Web开发

  繁體

介绍

对于那些向你的动态网页添加Macromedia电影的人来说,你肯定会发现让电影本身成为动态的很令人沮丧。 即动态变量和特性;或者电影本身就像一个旋转器一样动态。 如果不安装 Flash 插件或者实施特定版本的路由器,实际上是被禁用了。 虽然这个自定义 ASP.NET 控件不会唱和跳,但它使得这些任务非常容易管理。

FlashMovieControl 包装了可以被推送到 Flash 电影中的所有属性( 例如。 缩放,宽度,高度,窗口模式。 这个列表继续进行,并且与大型设计师支持,这证明了我是一个有价值的学习体验。 当前该控件的当前版本使用 Flash 2004 MX的最新属性和输出呈现。 你将发现发送到浏览器的渲染内容与直接从from发布的内容完全相同。

功能

  • 将变量动态发送到 Flash 影片:
    publicclass FlashMovieTest {
     protected Osmosis.Web.UI.Controls.FlashMovie FlashMovie1;
     privatevoid function AddMovieVariables() {
     this.FlashMovie1 = new Osmosis.Web.UI.Controls.FlashMovie();
     this.FlashMovie1.MovieVariables.Add("MyVar1","MyValue1");
     this.FlashMovie1.MovieVariables.Add("MyVar2","MyValue2");
     }
    }
    -------------------------------------
    Renders as:
    <object classid=.. ..> 
    <PARAM NAME=movie VALUE="MyMovie.swf?MyVar1=MyValue1&MyVar2=MyValue2">.. ..
  • 在客户端无法使用 Flash 插件的情况下轻松添加HTML内容。 ( 仅适用于 ClientScriptVersionDection )。 在呈现控件时,所有必要的JavaScript代码都会呈现为版本检测,包括在没有插入插件的情况下呈现的HTML内容。 注意,HTML代码会自动为你包装在必要的document.write('') 语句中。 huuuuuuuuuuuge时间保护程序。
    publicclass FlashMovieTest {
     protected Osmosis.Web.UI.Controls.FlashMovie FlashMovie1;
     privatevoid function AddNoFlashPluginContent() {
     this.FlashMovie1 = new Osmosis.Web.UI.Controls.FlashMovie();
     this.FlashMovie1.FlashOutputType = 
     Osmosis.Web.UI.FlashOutputType.ClientScriptVersionDection;
     this.FlashMovie1.NoFlashContainer.Controls.Add(new Table());
     }
    }
    -------------------------------------
    Renders as:
    if ( MM_FlashCanPlay ) {.. .
    } else{
    document.write('<table border="0" ID="Table1">');
    document.write('');
    document.write('</table>');
    }
  • 几乎与向 NoFlashContainer 添加内容一样,在禁用JavaScript和使用 ClientScriptVersionDection 时,你还可以添加 HTML。 呈现控件时,将呈现所有必要的JavaScript代码以进行版本检测。 但如果用户的浏览器不支持 JavaScript,则可以编程地添加web控件,以便在 <noscript> </noscript> HTML block。
    publicclass FlashMovieTest {
     protected Osmosis.Web.UI.Controls.FlashMovie FlashMovie1;
     privatevoid function AddNoFlashPluginContent() {
     this.FlashMovie1 = new Osmosis.Web.UI.Controls.FlashMovie();
     this.FlashMovie1.FlashOutputType = 
     Osmosis.Web.UI.FlashOutputType.ClientScriptVersionDection;
     this.FlashMovie1.NoScriptContainer.Controls.Add(new Table());
     }
    }
    -------------------------------------
    Renders as:
    <NOSCRIPT>
     <table border="0" ID="Table1"></table>
    </NOSCRIPT>
  • FS_Command 支持现在可用。 只需指定要包含在网页中的脚本标记的URI。 这将呈现出一个 脚本 带标签的标签 SRC 将属性设置为你的URI。
    publicclass FlashMovieTest {
     protected Osmosis.Web.UI.Controls.FlashMovie FlashMovie1;
     privatevoid Page_Load(object sender, System.EventArgs e) {
     this.FlashMovie1 = new Osmosis.Web.UI.Controls.FlashMovie();
     this.FlashMovie1.FSCommandScriptUrl = "../MyJavaScriptFile.js";
     }
    }
    -------------------------------------
    Renders as:
    <script language="javascript" src="../MyJavaScriptFile.js"></script>

flashoutputtype的用途是什么? ( 渗透。web。ui。flashoutputtype )

  • ClientScriptVersionDection: 告诉 FlashMovieControl 在你指定的版本上呈现必要的JavaScript代码来执行版本检测。 在这种模式下也是你分配给 NoScriptContainerNoFlashContainers的任何 NoScript/NoPlugin 内容。
  • FlashOnly: 告诉 FlashMovieControl 只渲染必要的HTML,将你的电影嵌入到网页中。 基本上,除了客户端脚本,用于检测插件版本的所有。
  • SWFVersionDetection: 这个有点奇怪。 它是 Flash Studio 2004中使用的最新输出类型。 它使用一个swf影片来检测是否安装了 Flash。 如果是,它使用 Flash 影片来检测客户机上是否安装了 Flash? 这对我来说是没有意义的。 但是在 Flash MX 2004中,当你使用这个标志集发布时,它将生成一个swf电影( 版本 4 ),它将指导你完成。 将这里输出方法与 FlashMovieControl 属性一起使用: SWF_
    ///Example of using SWFVersionDetectionthis.FlashMovie1.FlashOutputType = 
     Osmosis.Web.UI.FlashOutputType.SWFVersionDetection;this.FlashMovie1.MovieName = "MyMacromediaGeneratedDetectionMovie.swf";this.FlashMovie1.SWF_DetectionAltUrl = "IfNotDetectedUrl.aspx";this.FlashMovie1.SWF_DetectionContentUrl = "IfDetectedUrl.aspx";
  • 不支持所有其他输出类型,但默认为 FlashOnly。 我将它们添加到枚举中以便将来添加。

让我开始使用 FlashMovieControl

确保在项目中引用. dll。 在解决方案资源管理器中,找到项目并右键单击引用节点。 选择Add引用。浏览从CodeProject下载的. dll 文件并单击 OK"。 要与设计器一起使用: 当你的,处于设计视图中时,打开工具箱,然后单击。 选择添加/删除项目。浏览从CodeProject下载的. dll 文件,然后单击确定。 现在 FlashMovieControl 被添加到你的工具箱。 只需将它拖到页面上并打开属性窗口。 要记住的一件事是始终设置 MovieName 属性。 这是实际. swf 文件的URL。 如果忘记添加实际影片,浏览器将挂起,因为它试图定位不存在的文件。 如果没有设置电影,我将在以后的版本中设置该控件以引发异常。 below 是一个使用 ClientScriptVersionDetection 作为 FlashOutputTypeFlashMovieControl 示例。

using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;namespace FlashTest
{
 publicclass FlashMovieControlTest : System.Web.UI.Page
 {
 protected Osmosis.Web.UI.Controls.FlashMovie FlashMovie1;
 privatevoid Page_Load(object sender, System.EventArgs e)
 { 
 this.FlashMovie1 = new Osmosis.Web.UI.Controls.FlashMovie();
 ///Set the output type and Moviethis.FlashMovie1.FlashOutputType = 
 Osmosis.Web.UI.FlashOutputType.ClientScriptVersionDection;
 ///Always make sure you have a valid movie ///or your browser will hang.this.FlashMovie1.MovieName = "MyMovie.swf";
 /// Set the plugin version to check forthis.FlashMovie1.MajorPluginVersion = 7;
 this.FlashMovie1.MajorPluginVersionRevision = 0;
 this.FlashMovie1.MinorPluginVersion = 0;
 this.FlashMovie1.MinorPluginVersionRevision = 0;
 ///Set some other propertiesthis.FlashMovie1.MovieHeight = "400px";
 this.FlashMovie1.MovieWidth = "200px";
 this.FlashMovie1.AutoLoop = false;
 this.FlashMovie1.AutoPlay = true;
 this.FlashMovie1.FlashHorizontalAlignment = 
 Osmosis.Web.UI.FlashHorizontalAlignment.Center;
 this.FlashMovie1.FlashVerticalAlignment = 
 Osmosis.Web.UI.FlashVerticalAlignment.Top;
 this.FlashMovie1.HtmlAlignment = 
 Osmosis.Web.UI.FlashHtmlAlignment.Right;
 this.FlashMovie1.UseDeviceFonts = false;
 this.FlashMovie1.WindowMode = 
 Osmosis.Web.UI.FlashMovieWindowMode.Transparent;
 this.FlashMovie1.ShowMenu = false;
 this.FlashMovie1.MovieQuality = 
 Osmosis.Web.UI.FlashMovieQuality.AutoHigh;
 this.FlashMovie1.MovieScale = 
 Osmosis.Web.UI.FlashMovieScale.NoScale;
 /// Add some variablesthis.FlashMovie1.MovieVariables.Add("MyVar1","MyValue1");
 this.FlashMovie1.MovieVariables.Add("MyVar2","MyValue2");
 this.FlashMovie1.MovieVariables.Add("MyVar3","MyValue3");
 ///Set the NoScript and NoFlash content. ///In most situations where///html will be displayed the content is the same for boththis.FlashMovie1.NoFlashContainer.Controls.Add(
 this.GetDefaultHtmlContent());
 this.FlashMovie1.NoScriptContainer.Controls.Add(
 this.GetDefaultHtmlContent());
 }
 private HtmlTable GetDefaultHtmlContent(){
 HtmlTable tbl = new HtmlTable();
 HtmlTableRow tr = new HtmlTableRow();
 HtmlTableCell td = new HtmlTableCell();
 Label lbl = new Label();
 lbl.Text = "This is my default content";
 td.Controls.Add(lbl);
 tr.Cells.Add(td);
 tbl.Rows.Add(tr);
 return tbl;
 }
 #region Web Form Designer generated codeoverrideprotectedvoid OnInit(EventArgs e)
 {
 //// CODEGEN: This call is required by the ASP.NET // Web Form Designer.// InitializeComponent();
 base.OnInit(e);
 }
 ///<summary>/// Required method for Designer support - do not modify/// the contents of this method with the code editor.///</summary>privatevoid InitializeComponent()
 { 
 this.Load += new System.EventHandler(this.Page_Load);
 }
 #endregion }
}
-------------------------------------------------------------------
Renders As......
-------------------------------------------------------------------
<SCRIPT LANGUAGE="JavaScript1.1">
<!--
var MM_contentVersion = 7;
var plugin = (navigator.mimeTypes && navigator.mimeTypes[
"application/x-shockwave-flash"])?
navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
if ( plugin ) {
var words = navigator.plugins["Shockwave Flash"].description.split("");
for (var i = 0; i <words.length; ++i)
{
if (isNaN(parseInt(words[i])))
continue;
var MM_PluginVersion = words[i];
}
var MM_FlashCanPlay = MM_PluginVersion> = MM_contentVersion;
}
else if (navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0
&& (navigator.appVersion.indexOf("Win")!= -1)) {
document.write('<SCR' + 'IPT LANGUAGE="VBScript"> n');
document.write('on error resume next n');
document.write('MM_FlashCanPlay = ( 
 IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash." & 
 MM_contentVersion)))n');
document.write('</SCR' + 'IPT> n');
}
if ( MM_FlashCanPlay ) {
document.write('<OBJECT classid=
"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"');
document.write(' codebase=
"http://fpdownload.macromedia.com/pub/shockwave/cabs/
 flash/swflash.cab#version=7,0,0,0" ');
document.write(' ID="FlashMovie1" WIDTH="200px" 
 HEIGHT="400px" ALIGN="right">');
document.write(' <PARAM NAME=movie 
 VALUE="MyMovie.swf?MyVar1=MyValue1&MyVar2=MyValue2&MyVar3=MyValue3"> 
 <PARAM NAME=loop VALUE=false/> <PARAM NAME=menu VALUE=false/> 
 <PARAM NAME=scale VALUE=noscale/> <PARAM NAME=wmode VALUE=transparent/>
 <PARAM NAME=salign VALUE=T/> <PARAM NAME=quality VALUE=AutoHigh/> 
 <PARAM NAME=bgcolor VALUE=#ffffff/> <PARAM NAME="allowScriptAccess" 
 value="SameDomain"/> ');
document.write(' <EMBED 
 src="MyMovie.swf?MyVar1=MyValue1&MyVar2=MyValue2&MyVar3=MyValue3" 
 loop="false" menu="false" scale="noscale" wmode="transparent" 
 salign="T" quality="autohigh" bgcolor="#ffffff" 
 allowScriptAccess="SameDomain" ');
document.write(' swLiveConnect=FALSE WIDTH="200px" 
 HEIGHT="400px" NAME="MyMovie.swf" ALIGN="right"');
document.write(' TYPE="application/x-shockwave-flash" 
 PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">');
document.write(' </EMBED>');
document.write(' </OBJECT>');
} else{
document.write('<table>');
document.write(' <tr>');
document.write(' <td><span>This is my default content</span></td>');
document.write(' </tr>');
document.write('</table>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<table ID="Table1">
 <tr>
 <td><span>This is my default content</span></td>
 </tr>
</table>
</NOSCRIPT>
HTML View example
------------------
<OSMOSIS:FLASHMOVIE id=FlashMovie1 runat="server" 
 MovieName="MyMovie.swf" AutoLoop="False" AutoPlay="False" 
MovieScale="NoScale" MovieQuality="AutoLow" FlashHorizontalAlignment="Right" 
FlashVerticalAlignment="Top" MovieHeight="222" MovieWidth="33" 
WindowMode="Transparent"></Osmosis:FlashMovie>

感谢你的输入 ! 请随时与我们联系,随时联系任何问题或者建议。

历史记录

  • 初始版本:使用 Macromedia 2004属性和输出方法。
  • ::
    • 增强:所有属性都保留在 viewstate ( 除了 NoScriptNoFlash 控件属性) 中。
    • Bug 修复程序:应该使用 MAC IE 浏览器更好地工作( 返回输出) 嵌入 所有浏览器的标签)。
    • Bug 修复:当在电影名称中使用SSL时,,页面和插件页面也使用 SSL ( 取消浏览器消息询问是否要在安全页面中显示非安全内容)。
  • 2004/04/13
    • 添加了 FSCommand 支持。
    • Bug 修复:支持页面的多个 Flash 电影现在支持( 实现 INamingContainer )。
    • 浏览器检测:仅输出 <嵌入> 非浏览器浏览器标签。
  • ::
    • Bug 修复:添加了更好的对SSL使用测试的支持。
  • ::
    Bug 修复:修复最后的发布问题,但不显示 <嵌入> MAC IE 浏览器上的标签。

WEB  FLA  Flash  webcontrol