zoukankan      html  css  js  c++  java
  • 编写一个Flash播放器的WebPart

    ***********************************************************************************
    *                  版权声明                        
    *         此文章为ocean所有,版权归ocean所有,任何网站
    *和 媒体转载必须包含此段声明,否则将视为侵权,作者将 
    * 保留一切权力。此声明为此文章中不可或缺的一部分。 
    * 作者网名:ocean                                  
    * 作者email:ocean@forever.net.cn                  
    * 作者网站:http://www.oceanstudio.net             
    *                     http://sps.oceanstudio.net             
    * 作者blog:博客园,http://www.cnblogs.com/ocean  
    *                 ocean's blog,http://www.oceanstudio.net/sps/blog 
    * 此文章发表时间:2005年2月3日                     
    * 此文章源:http://www.cnblogs.com/ocean/archive/2005/02/03/101434.html                                      
    ************************************************************************************


    这个WebPart点击此处下载,带源码。

     点击此处察看效果演示

    最近看到一个老外写的一个Flash播放器的WebPart,感觉这些WebPart写起来很简单,正好也希望给初学者介绍一下如何进行WebPart的开发。我也没写过几个WebPart,因为实际上WebPart的开发是师傅领进门,修行在个人。很多初学Sharepoint的对WebPart开发摸不着头脑。实际WebPart写起来很简单,但是准备工作比较复杂,包括安装模板,引用dll,部署,调试等。这些东西我在后面的一篇文章中会介绍。另外就是WebPart的开发需要多看看sharepoint的sdk,里面讲解了组件模型,如果你的WebPart不引用任何SPS库对象(比如这个Flash WebPart),那么写起来就更简单了。

    首先如何写WebPart,在新建了一个WebPart的项目之后,默认就生成了一个WebPart,这个WebPart本身就能够编译成功,当然这个WebPart是一个空的WebPart。什么功能也没有。

    WebPart的呈现是靠RenderWebPart这个方法实现的,这个方法有一个output参数,只要通过output将需要呈现的HTML输出出来就可以了。熟悉asp的朋友可能很熟悉这种方式,就像用asp的Response一样。因为WebPart的呈现无法用可视化的开发。当然利用Kaneboy做的用户控件包装器可以简单的将一个用户控件包装成WebPart。

    OK,那么该如何呈现呢,其实Flash的呈现代码很简单,就是输出一个object标签,然后设置flash的url、width、height等属性。那么我们需要设置哪几个属性呢?是Flash url、Width、Height、Quality、CabVersion(CAB的版本)这五个属性。

    这五个属性定义如下:

    private string url = "";
            [Browsable(
    true),
            Category(
    "Flash属性"),
            DefaultValue(
    ""),
            WebPartStorage(Storage.Personal),
            FriendlyName(
    "Flash Url"),
            Description(
    "Flash动画的Url")]
            
    public string Url
            
    {
                
    get
                
    {
                    
    return url;
                }


                
    set
                
    {
                    url 
    = value;
                }

            }

            

            
    private int width = 100;
            [Browsable(
    true),
            Category(
    "Flash属性"),
            DefaultValue(
    100),
            WebPartStorage(Storage.Personal),
            FriendlyName(
    "Flash的显示宽度(px,0表示原大小)"),
            Description(
    "Flash动画的宽度")]
            
    public int FlashWidth
            
    {
                
    get
                
    {
                    
    return width;
                }


                
    set
                
    {
                    width 
    = value;
                }

            }


            
    private int height = 100;
            [Browsable(
    true),
            Category(
    "Flash属性"),
            DefaultValue(
    100),
            WebPartStorage(Storage.Personal),
            FriendlyName(
    "Flash的显示高度(px,0表示原大小)"),
            Description(
    "Flash动画的高度")]
            
    public int FlashHeight
            
    {
                
    get
                
    {
                    
    return height;
                }


                
    set
                
    {
                    height 
    = value;
                }

            }


            
    private string quality = "high";
            [Browsable(
    true),
            Category(
    "Flash属性"),
            DefaultValue(
    "high"),
            WebPartStorage(Storage.Personal),
            FriendlyName(
    "Flash显示质量"),
            Description(
    "Flash动画的显示质量")]
            
    public string Quality
            
    {
                
    get
                
    {
                    
    return quality;
                }


                
    set
                
    {
                    quality 
    = value;
                }

            }


            
    private string cabversion = "7,0,0,0";
            [Browsable(
    true),
            Category(
    "Flash属性"),
            DefaultValue(
    "7,0,0,0"),
            WebPartStorage(Storage.Personal),
            FriendlyName(
    "Flash的CAB版本"),
            Description(
    "Flash的CAB版本")]
            
    public string CabVersion
            
    {
                
    get
                
    {
                    
    return cabversion;
                }


                
    set
                
    {
                    cabversion 
    = value;
                }

            }

    默认的时候有一个Text属性,只要照猫画虎就可以了。每个属性前有一堆属性修饰。这些属性不用讲也能猜得出来意思。

    然后最终的呈现代码如下:

    /// <summary>
            
    /// Render this Web Part to the output parameter specified.
            
    /// </summary>
            
    /// <param name="output"> The HTML writer to write out to </param>

            protected override void RenderWebPart(HtmlTextWriter output)
            
    {
                
    try 
                
    {
                    
    if (this.url.Trim() == ""
                    
    {
                        output.Write(SPEncode.HtmlEncode(
    "请选择要显示的Flash动画"));
                    }

                    
    else 
                    
    {
                        output.Write(
    "<OBJECT classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=");
                        output.Write(SPEncode.HtmlEncode(this.cabversion) + "\" ");
                        output.Write(" WIDTH=\"" + this.width + "\" ");
                        output.Write(
    " \"HEIGHT=\"" + this.height + "\">");
                        output.Write("<PARAM NAME=movie VALUE=\"" + SPEncode.HtmlEncode(this.url) + "\"><PARAM NAME=quality VALUE=" + SPEncode.HtmlEncode(this.quality) + "><param name=wmode value=opaque>");
                        output.Write(
    "<EMBED src=\"" + SPEncode.HtmlEncode(this.url) + "\" quality=" + SPEncode.HtmlEncode(this.quality));
                        output.Write(
    " WIDTH=\"" + this.width + "\" ");
                        output.Write(
    " HEIGHT=\"" + this.height + "\" ");
                        output.Write(
    " TYPE=\"application/x-shockwave-flash\" PLUGINSPAGE=\"http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash\"></EMBED></OBJECT>");
                    }

                }

                
    catch (Exception e) 
                
    {
                    output.Write(
    "有错误发生:" + e.Message);
                }

            }


    其中注意是当Url为空的时候提示一个需要设置属性的信息。另外就是捕获一下异常。

    一个WebPart就这么轻轻松松完成了,然后就是部署了。关于WebPart的强签名和部署,我将在以后的Blog中讲。

  • 相关阅读:
    python写的百度贴吧相册下载
    C#的图片拼接
    删除目录下的所有".svn"文件
    centOS 6.5 yum升级 gcc4.8 然后又退回来4.4
    代理的分类简述特点
    GCC 特性整理
    纯C 实现 strpos substr strspilt str_trim
    编译putty 源码去掉 Are you sure you want to close this session? 提示
    OpenWrt tcpdump 抓包
    安卓 打飞机 app 开发 第一篇
  • 原文地址:https://www.cnblogs.com/ocean/p/101434.html
Copyright © 2011-2022 走看看