一、初始化

  ·当页面被提交请求第一个方法永远是构造函数。您可以在构造函数里面初始一些自定义属性或对象,不过这时候因为页面还没有被完全初始化所以多少会有些限制。特别地,您需要使用HttpContext对象。当前可以使用的对象包括QueryString, Form以及Cookies集合,还有Cache对象。注意:在构造函数里是不允许使用Session的。

  ·下一个将执行的方法是AddParsedSubObject方法,这个方法将添加所有独立的控件并把页面组成一个控件集合树,这个方法经常被一些高级的页面模板解决方案(Page Template Solutions)重写以便添加页面内容到页面模板(Page Template)中一些特殊的控件中。这个方法递归应用到所有的页面控件及相应的的每个子控件,所有的控件都是在这个方法中开始最早的初始化。

  ·页面类中下一个将执行的方法是DeterminePostBackMode。这个方法允许您修改IsPostBack的值及相关的事件。如果您需要从数据库中加载ViewState这个方法将特别有用,因为ViewState只有在IsPostBack为真的情况下才会进行恢复。返回空将会导致强制执行非回传,返回Request.Form则强制执行一个回传。除非在特殊情况下,否则并不建议去操作这个,因为这个还会影响其他的事件。

  ·下一个将要执行的方法是OnInit方法,一般这是第一个真正被使用的方法。这个方法触发时,所有页面定义中的控件执行初始化,这意味着所有在页面中定义的值应用到相应的控件上。不过,ViewState和传回的值还不会应用到控件上,因此,任何被代码或用户改变的值还没有被恢复到控件上。这个方法通常是最好的创建、重创建动态控件的好地方。

  二、恢复及加载

  ·下一个方法,LoadPageStateFromPersistenceMedium只会在页面被回传的时候才会被执行。如果因为使用Session或自定义存储方式,您修改了后面将要提到的影响ViewState保存方式的方法SavePageStateToPersistenceMedium,则这个方法需要被重写。默认的实现中ViewState是一种Base64格式编码,并且被保存在页面的隐藏域中,您可以使用这篇文章中提及的方法修改ViewState按以上两种方式保存。注意:这个方法并没有真正加载ViewState到页面或页面控件中。

  ·当得到ViewState后,下一个方法LoadViewSate,将以递归的方式恢复ViewState到页面及各个页面控件或子控件中。这个方法执行后,每个控件都将恢复到上一次的状态,但是用户提交的数据还没有应用到控件上,因为他们不是ViewState的一部分。这个方法主要用于恢复您在其他事件中动态生成的控件的值,他们的值是您手动保存在ViewSate中,并且现在已经失效。

  ·下一个方法是ProcessPostData,这个方法也同样是回传的时候才会被执行,并且不允许被重写,这个是页面基类的私有方法。这个方法通过匹配控件的名称恢复相应的用户提交的控件的值,到这一步意味着整个页面都已经被完全恢复了。唯一要记住的是所有动态控件的创建必须在这个方法之前。这个方法也是记录后面的改变事件的方法。

  ·下一个方法是OnLoad方法,通常这是用得最多的方法,因为这个方法是页面生存期第一个恢复了所有值的地方。大多数代码根据判断IsPostBack来决定是否重新设置控件状态。您也可以在这个方法中调用Validate并且检查IsValid的值。也可以在这个方法中创建动态控件,并且该控件的所有的方法都会被执行以追上当前页面的状态包括ViewSate,不过不包括回传的值。

  三、事件处理

  ·下一个方法还是ProcessPostData,实际上就是前一个方法的另一次调用,它仍然是只在回传的时候执行并且由于是私有方法不可以被重写。如果您是第一次看页面的运行轨迹也许会觉得这个方法有些多余。但实际上这个方法是必要的因为在OnLoad中创建的动态控件也需要他们回传的值。任何在这以后创建的控件将可以得到他们的ViewState,但是不能再得到他们的回传的值,并且不会触发任何值改变事件(Change Event)。

  ·下一个方法,RaiseChangedEvents,也是只在回传页面中执行,并且也因为是基类的私有方法所有不能被继承。在整个页面生存期中,是在这儿根据之前的ProcessPostData记录的控件的值和提交的值是否不同来触发值改变事件。您也许需要调用Validate或者检查IsValid的值。这里并没有特别的说明多个值改变事件的执行先后顺序。

  ·下一个方法,RaisePostBackEvent,同样是因为是基类的私有方法不能被继承,同样也是只在回传页面中执行。除非使用了AutoPostBack,不然这是实际提交表单事件执行的地方,特别是按钮或者其实使用javascript提交表单等。如果还没有被手动调用过并且使用了验证控件,那么Validate会被调用。注意IE中有个BUG有时会允许提交但却不触发任何事件。

  ·下一个方法是OnPreRender,一般这是在客户端展现页面之前改变页面及其控件的最后一次机会。您也可以在这个方法里面创建动态控件,并且所有的方法都会被执行以追上当前页面的状态包括ViewSate,但是私有方法将不会被执行,这意味着不会有回传的值并且不会有事件触发。由于IE中的BUG,这是一个没有事件赶上PostBack的好地方。

posted @ 2008-07-25 18:07 zhangsir 阅读(0) | 评论 (0)编辑

 

using System.Text.RegularExpressions;

/// <summary>

  /// 去除HTML标记

  /// </summary>

  /// <param name="NoHTML">包括HTML的源码 </param>

  /// <returns>已经去除后的文字</returns>

  public static string NoHTML(string Htmlstring)

  { 

   //删除脚本

   Htmlstring = Regex.Replace(Htmlstring,@"<script[^>]*?>.*?</script>","",RegexOptions.IgnoreCase);

   //删除HTML

   Htmlstring = Regex.Replace(Htmlstring,@"<(.[^>]*)>","",RegexOptions.IgnoreCase);

   Htmlstring = Regex.Replace(Htmlstring,@"([\r\n])[\s]+","",RegexOptions.IgnoreCase);

   Htmlstring = Regex.Replace(Htmlstring,@"-->","",RegexOptions.IgnoreCase);

   Htmlstring = Regex.Replace(Htmlstring,@"<!--.*","",RegexOptions.IgnoreCase);

   

   Htmlstring = Regex.Replace(Htmlstring,@"&(quot|#34);","\"",RegexOptions.IgnoreCase);

   Htmlstring = Regex.Replace(Htmlstring,@"&(amp|#38);","&",RegexOptions.IgnoreCase);

   Htmlstring = Regex.Replace(Htmlstring,@"&(lt|#60);","<",RegexOptions.IgnoreCase);

   Htmlstring = Regex.Replace(Htmlstring,@"&(gt|#62);",">",RegexOptions.IgnoreCase);

   Htmlstring = Regex.Replace(Htmlstring,@"&(nbsp|#160);"," ",RegexOptions.IgnoreCase);

   Htmlstring = Regex.Replace(Htmlstring,@"&(iexcl|#161);","\xa1",RegexOptions.IgnoreCase);

   Htmlstring = Regex.Replace(Htmlstring,@"&(cent|#162);","\xa2",RegexOptions.IgnoreCase);

   Htmlstring = Regex.Replace(Htmlstring,@"&(pound|#163);","\xa3",RegexOptions.IgnoreCase);

   Htmlstring = Regex.Replace(Htmlstring,@"&(copy|#169);","\xa9",RegexOptions.IgnoreCase);

   Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);","",RegexOptions.IgnoreCase);

   Htmlstring.Replace("<","");

   Htmlstring.Replace(">","");

   Htmlstring.Replace("\r\n","");

   Htmlstring=HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();

   return Htmlstring;

  }

posted @ 2008-07-24 10:38 zhangsir 阅读(3) | 评论 (0)编辑

一个项目需要动态处理客户端页面中图片的宽度,防止页面被过宽的图片撑变形。

过程就不叙说了。最终代码如下: 

<script language="javascript" type="text/javascript">
    window.onload
=function()
    {

         var imgWidthToLimit=580;          //对图片的限制宽度
         
var imgCongObj = ImgContainer.getElementsByTagName("IMG");     //获取id为ImgContainer的页面容器(div、table等)中的所有img对象
         
for( i=0;i<imgCongObj.length;i++)
         {
            
var image = new Image();
            image.src
=imgCongObj[i].src;
            image.i
=i;
            image.onreadystatechange
=function(){ 
                
if (image.readyState=="complete") { 
                    
var w= parseInt(image.width);
                    
if(w>imgWidthToLimit) imgCongObj[this.i].width=imgWidthToLimit;
                }
            } 
            
         }
    }                              
</script>    

 

 

 

 

 

 

参考资料:

<script>
var image = new Image();
image.src = 'http://www.baidu.com/img/logo.gif';
image.onreadystatechange=function(){
if (image.readyState=="complete") {
alert(["图片大小是:",image.width,image.height]);
}
}
</script>

解决了客户端图片没有加载而读取图片宽度时为0的问题。此法不稳定。后来我加到window.onload事件中  一切问题就解决了。

posted @ 2008-07-19 17:59 zhangsir 阅读(7) | 评论 (0)编辑
ceil函数

ceil函数的作用是求不小于给定实数的最小整数。

ceil(2)=ceil(1.2)=cei(1.5)=2.00


使用该函数需要包含头文件<math.h>,该函数返回值为浮点型


Run-Time Library Referenceceil, ceilfCalculates the ceiling of a value.


double ceil(
   double x
);
float ceil(
   float x
);  // C++ only
long double ceil(
   long double x
);  // C++ only
float ceilf(
   float x
);

Parameter
x
Floating-point value.
Return Value
The ceil function returns a double value representing the smallest integer that is greater than or equal to x. There is no error return.

Input SEH Exception Matherr Exception
± QNAN,IND none _DOMAIN

ceil has an implementation that uses Streaming SIMD Extensions 2 (SSE2). See _set_SSE2_enable for information and restrictions on using the SSE2 implementation.

Remarks
C++ allows overloading, so you can call overloads of ceil. In a C program, ceil always takes and returns a double.

Requirements
Routine Required header Compatibility
ceil, ceilf <math.h> ANSI, Win 98, Win Me, Win NT, Win 2000, Win XP

For additional compatibility information, see Compatibility in the Introduction.

Libraries

All versions of the C run-time libraries.

Example
See the example for floor.

posted @ 2008-07-14 16:33 zhangsir 阅读(6) | 评论 (0)编辑
在as2.0中我们要得到flashvars中的值,比如说temp,我们用_root.temp就可以了。

在as3.0中我们用这样的方法:
var temp=this.loaderInfo.parameters["temp"];
posted @ 2008-07-09 16:33 zhangsir 阅读(14) | 评论 (0)编辑

在AS3中引入了标签,新的标签可以和循环体一起使用。例如,现在有两个嵌套的循环体,如果想要在内循环体中break掉外循环,一般使用下面的方法:

var i:Number;

var j:Number;

var exit:Boolean = false;

for (i=0; i<10; i++) {

    for (j=0; j<10; j++) {

        if (i > 3 && j > 3) {

            exit = true;

            break;

        }

    }

    if (exit) {

        break;

    }

}

在引入了新的标签以后,可以使用下面的方法从内循环体中直接break掉外循环体:

var i:Number;

var j:Number;

mainLoop: for (i=0; i<10; i++) {

    for (j=0; j<10; j++) {

        if (i > 3 && j > 3) {

            break mainLoop;

        }

    }

}

在第一个循环体上设置了mainLoop的标签,因此在循环体内任何地方使用break mainLoop直接中止外循环。

*检测鼠标离开Movie的动作

在以前的AS版本中,你无法做到检测鼠标是否还在Flash Movie上。因此影片不能检测到用户是否在关注着当前的Movie。另外一个问题是,如果使用了自定义的鼠标样式,在鼠标移出Movie后,自定义的鼠标还是继续停留在影片上,而不能正确的显示鼠标当前的位置。

现在,AS3允许你通过监听stage的mouseLeave行为来捕获鼠标移出Movie的动作。mouseLeave行为在鼠标移出Movie的时候执行。但是现在并没有mouseEnter事件,不过你可以通过使用mouseMove来设置。下面的例子中使用了一个方框来作为自定义的鼠标:

package {

    import flash.display.Sprite;

    import flash.events.Event;

    import flash.events.MouseEvent;

    import flash.ui.Mouse;

    

    public class Test extends Sprite {

        

        private var cursor:Sprite = new Sprite();

        

        public function Test() {

            cursor.graphics.beginFill(0xFF);

            cursor.graphics.drawRect(0, 0, 25, 25);

            addChild(cursor);

            

            stage.addEventListener(Event.MOUSE_LEAVE, cursorHide);

            stage.addEventListener(MouseEvent.MOUSE_MOVE, cursorFollow);

            Mouse.hide();

        }

        

        public function cursorHide(evt:Event):void {

            cursor.visible = false;

        }

        

        public function cursorFollow(evt:MouseEvent):void {

            if (!cursor.visible) cursor.visible = true;

            cursor.x = stage.mouseX;

            cursor.y = stage.mouseY;

            evt.updateAfterEvent();

        }

    }

}

当鼠标离开Movie的时候,鼠标指针将被隐藏。当鼠标再次移动到Movie上的时候,mouseMove会被执行,然后显示鼠标。

posted @ 2008-07-09 12:32 zhangsir 阅读(10) | 评论 (0)编辑

最近用AS3写一些项目,在编程过程中,遇到不少问题,同时也有一些收获和心得。现在贴出来希望对大家在AS3编程有一些帮助。如果你发现有说得不对的地方,你可以指出来,大家一起来讨论。

1、AS3的强制类型转换

我之前一直以为是没有这个功能的,而最近在看一些文档,发现这个功能是有的。目前总结下来有两种写法:

  1. var loader:URLLoader = URLLoader(event.target);

     

    不知道这种写法是借鉴那种编程语言,反正我没有见过。

    补充这个语法说明:http://livedocs.adobe.com/flash/8_cn/main/00001211.html

  2. var loader:URLLoader = event.target as URLLoader;

     

    这种写法是借鉴VB.Net编程语言,唉!AS3语法真得一个大杂烩。

 

2、URLStream和URLLoader

URLStream在文本文件数据方面可以支持多种字符编码。

URLLoader在进过测试后,发现除UTF-8字符编码外,其他字符编码读过来的数据都是乱码。

可通过ByteArray对象字符编码转换(感谢abc12hjc提供补充代码):

public class MoxieAS extends Sprite

{

    public function MoxieAS ()

    {

        var stream:URLStream = new URLStream;

        

        stream.addEventListener(Event.COMPLETE, complete);

        stream.load(new URLRequest("ttt.xml"));  //  <root><a /><b /><c /></root>

    }

    

    private function complete (event:Event):void

    {

        var stream:URLStream = event.target as URLStream;

        var xml:XML = XML(stream.readUTFBytes(stream.bytesAvailable));

        

        trace(xml.*.length());  //  output 3

    }

}

具体用那个方式就看实际功能需求了。

3、URLRequest

URLStream、URLLoader、Loader等读取外部数据的类,里的load方法参数值是URLRequest对象。我在编程过程总是喜欢直接写地址字符串,原来习惯改过来看样子要花点时间了。

4、Loader

在使用Loader来加载数据时,添加侦听事件时,注意一定要给Loader的 contentLoaderInfo属性增加事件,而不是给Loader对象增加事件。我就是因为加错对象(关键是编译时还没有报错),郁闷得差点要把电脑给扔了。

错误写法:

 var loader:Loader = new Loader(); 

 loader.addEventListener(Event.COMPLETE, completeHandler);

 loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 

 loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

正确写法:

 var loader:Loader = new Loader();

 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);

 loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);

 loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

5、Loader加载过来的数据类型

大家知道Loader是用来代替原来 MovieClip的loadMovie功能,用于加载外部的图片文件,SWF文件。

  • 如果加载图片文件(jpg,gif,png等)时,Loader.content得到数据类型是Bitmap对象;
  • 如果加载SWF文件(flash 9 版本)时,Loader.content得到数据类型是MovieClip对象;
  • 如果加载SWF文件(flash 9 以前版本) 时, Loader.content得到数据类型是AVM1Movie对象;

 

6、stage

在调试flash过程发现,如果把swf文件放到html页面后,stage.stageWidth和stage.stageHeight在第一次加载调用时,他们的值为空值;

7、 AVM1Movie

如果是AVM1Movie 对象时,就不能直接调用stop,play,gotoAndStop等原来MovieClip对象的功能了,而且不能将AVM1Movie 对象转换成MovieClip对象。目前解决办法:一种是用flash cs3 重新生成 flash 9的swf文件;另一种是国外网站有说能AVM1和AVM2两个虚拟机相互调用的方式(贴一个地址);

8、mask

在使用遮罩功能,发现一个问题,如果不把用于遮罩的显示元件通过addChild方法添加到同一级的显示容器里的话,遮罩效果就显示不正常,不知道这个是不是一个bug。我差点因为这个问题而放弃AS3改用AS2了。


转自(http://blog.163.com/lihua61622137@126/blog/static/553499122007112832153684/

posted @ 2008-07-09 11:28 zhangsir 阅读(15) | 评论 (0)编辑
参考:http://livedocs.adobe.com/flash/9.0_cn/ActionScriptLangRefV3/flash/net/FileReference.html#event:uploadCompleteData
posted @ 2008-07-08 09:44 zhangsir 阅读(11) | 评论 (0)编辑
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent

1、   传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。                            

例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</script>

2、   进行url跳转时可以整体使用encodeURI

例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

3、   js使用数据时可以使用escape

[Huoho.Com编辑]

例如:搜藏中history纪录。

4、   escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。


最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

posted @ 2008-07-04 17:01 zhangsir 阅读(5) | 评论 (0)编辑

     用as做滤镜效果,每种滤镜效果对应一个类,这些类都在Macromedia\Flash 8 Beta 2\zh_cn\First Run\Classes\FP8\flash\filters这个文件夹里

  一、渐变斜角——GradientBevelFilter类

  二、投影——DropShadowFilter类

  三、模糊——BlurFilter类(这个最容易了,参数少)

  四、发光——GlowFilter类

  五、渐变发光——GradientGlowFilter类

  六、斜角——BevelFilter类

  我暂时就只知道这6个

  做法是用new关键字新建一个相应类的对象,暂时就叫myfilters吧,然后把这个对象添加进一个数组filters_array,最后把这个数组赋值给mc的fliters属性,大功告成。

  我想其中关键应该就是创建对象时如何设置里面的参数吧,我想滤镜的面板大家都很熟悉的了,那么,我就把as添加滤镜的一些参数和它们的面板相对照,这样可能更容易理解。

  下面逐个举例(都是帮助里的例子啦,里面的参数名字都是可以改的,不过我觉得就用那些名字就蛮好),例子里都有函数setUpFlatRectangle(也有叫createRectangle的),是用来做一个方形mc的。

function setUpFlatRectangle(w:Number, h:Number, bgColor:Number, name:String):MovieClip {
var mc:MovieClip = this.createEmptyMovieClip(name, this.getNextHighestDepth());
mc.beginFill(bgColor);
mc.lineTo(w, 0);
mc.lineTo(w, h);
mc.lineTo(0, h);
mc.lineTo(0, 0);
return mc;
}

  直接把脚本复制到主场景的第一帧就ok了,不要忘记上面的函数哦,要注意改函数名的

  一、渐变斜角——GradientBevelFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

  脚本:

import flash.filters.GradientBevelFilter;
import flash.filters.BitmapFilter;
var art:MovieClip = setUpFlatRectangle(150, 150, 0xCCCCCC, "gradientBevelFilterExample");
//创建新的mc,实例名:art
var distance:Number = 5;
var angleInDegrees:Number = 225; // opposite 45 degrees
var colors:Array = [0xFFFFFF, 0xCCCCCC, 0x000000];
var alphas:Array = [1, 0, 1];
var ratios:Array = [0, 128, 255];
var blurX:Number = 8;
var blurY:Number = 8;
var strength:Number = 2;
var quality:Number = 3;
var type:String = "inner";
var knockout:Boolean = true;//设置各个参数
var filter:GradientBevelFilter = new GradientBevelFilter(distance, angleInDegrees, colors, alphas, ratios, blurX, blurY, strength, quality, type, knockout);//创建斜角滤镜对象filter
var filterArray:Array = new Array();
filterArray.push(filter); //把filter添加进数组filterArray,如果art上有多个滤镜效果,就直接添加进这个数组好了
art.filters = filterArray;//将art的filters属性设置为filterArray

  下面是脚本中的参数和面板中的参数对比:

  colors、alphas、ratios用来控制渐变颜色的,colors是色彩,alphas是百分比(这里面是0~1的小数),ratios是偏移量0~255(可以参考Color类)blurX、blurY是就对应面板里的模糊x、模糊y。strength是面板里的强度,是0~255的数;quality是品质,只有1、2、3分别对应低、中、高
distance是距离,默认4.0;type是类型,用字符串表示,例子中的”inner”是内侧,还有outer、fuller;knockout是个布尔值,表示是否挖空。

  二、投影——DropShadowFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.DropShadowFilter;
var art:MovieClip = createRectangle(100, 100, 0x003366, "gradientGlowFilterExample");
var distance:Number = 20;
var angleInDegrees:Number = 45;
var color:Number = 0x000000;
var alpha:Number = 0.8;
var blurX:Number = 16;
var blurY:Number = 16;
var strength:Number = 1;
var quality:Number = 3;
var inner:Boolean = false;
var knockout:Boolean = false;
var hideObject:Boolean = false;
var filter:DropShadowFilter = new DropShadowFilter(distance, angleInDegrees, color, alpha, blurX, blurY, strength, quality, inner, knockout, hideObject);
var filterArray:Array = new Array();
filterArray.push(filter);
art.filters = filterArray;

  下面是脚本中的参数和面板中的参数对比:

Distance是距离;
angleInDegrees是角度0~360
blurX、blurY是模糊x、模糊y
strength是强度,脚本里是0~5的数
quality是品质,只能是1、2、3,分别对应低、中、高
inner是内侧阴影
knockout是挖空
hideObject是隐藏对象

  三、模糊——BlurFilter类(这个最容易了,参数少嘛)

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.BlurFilter;
var rect:MovieClip = createRectangle(100, 100, 0x003366, "BlurFilterExample");
var blurX:Number = 30;
var blurY:Number = 30;
var quality:Number = 3;
var filter:BlurFilter = new BlurFilter(blurX, blurY, quality);
var filterArray:Array = new Array();
filterArray.push(filter);
rect.filters = filterArray;

  这个就不解释了,就三个参数,前面都介绍过了,下面遇到介绍过的参数就都不介绍了

  四、发光——GlowFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.GlowFilter;
var rect:MovieClip = createRectangle(100, 100, 0x003366, "gradientGlowFilterExample");
var color:Number = 0x33CCFF;
var alpha:Number = .8;
var blurX:Number = 35;
var blurY:Number = 35;
var strength:Number = 2;
var quality:Number = 3;
var inner:Boolean = false;
var knockout:Boolean = false;
var filter:GlowFilter = new GlowFilter(color, alpha, blurX, blurY, strength, quality, inner, knockout);
var filterArray:Array = new Array();
filterArray.push(filter);
rect.filters = filterArray;

  五、渐变发光——GradientGlowFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.GradientGlowFilter;
var art:MovieClip = createRectangle(100, 100, 0x003366, "gradientGlowFilterExample");
var distance:Number = 0;
var angleInDegrees:Number = 45;
var colors:Array = [0xFFFFFF, 0xFF0000, 0xFFFF00, 0x00CCFF];
var alphas:Array = [0, 1, 1, 1, 1];
var ratios:Array = [0, 63, 126, 255];
var blurX:Number = 50;
var blurY:Number = 50;
var strength:Number = 2.5;
var quality:Number = 3;
var type:String = "outer";
var knockout:Boolean = false;
var filter:GradientGlowFilter = new GradientGlowFilter(distance, angleInDegrees, colors, alphas, ratios, blurX, blurY, strength, quality, type, knockout);
var filterArray:Array = new Array();
filterArray.push(filter);
art.filters = filterArray;

  这里的参数跟发光那个很像,需要说明的就是用来设置颜色的那几个数组里的4项依次是表示从外到内的颜色的

  六、斜角——BevelFilter类

  面板:截图暂无,就是截的滤镜面板啦,各位大哥请麻烦自己打开flash对照吧

脚本:

import flash.filters.BevelFilter;
var distance:Number = 5;
var angleInDegrees:Number = 45;
var highlightColor:Number = 0xFFFF00;
var highlightAlpha:Number = 1;
var shadowColor:Number = 0x0000FF;
var shadowAlpha:Number = 1;
var blurX:Number = 10;
var blurY:Number = 10;
var strength:Number = 2;
var quality:Number = 3;
var type:String = "inner";
var knockout:Boolean = false;
var filter:BevelFilter = new BevelFilter(distance, angleInDegrees, highlightColor, highlightAlpha, shadowColor, shadowAlpha, blurX, blurY, strength, quality, type, knockout);
var rect:MovieClip = createRectangle(100, 100, 0x00CC00, "bevelFilterExample");
rect.filters = new Array(filter);

参数:

highlightColor、highlightAlpha设置加亮颜色
shadowColor、shadowAlpha设置阴影颜色

posted @ 2008-07-03 14:02 zhangsir 阅读(22) | 评论 (0)编辑