Flash CS3 Demo 01 - Crystal Star



这个Demo是把自己以前用Flash画的一个水晶五角星拿出来,结合一个取色器组件,写了一点点
AS,完成的一个Demo。

实例名示意图:

 

这个Demo中的AS部分只写了一帧,AS如下:

//引入需要的类
import fl.events.ColorPickerEvent;
import fl.controls.ColorPicker;
import flash.filters.GlowFilter;
import flash.geom.ColorTransform;

//为comColorPicker注册事件侦听器
comColorPicker.addEventListener(ColorPickerEvent.CHANGE, processing);

//为mcStar建立用于存储滤镜效果的数组
var arrayFilters:Array = new Array();

function processing(event:ColorPickerEvent)
{
       //删除上次应用的效果
       arrayFilters.pop();
       //新建一个“发光”滤镜,设置滤镜参数
       var filterGlowFilter:GlowFilter = new GlowFilter();
       filterGlowFilter.blurX = 5;
       filterGlowFilter.blurY = 5;
       filterGlowFilter.quality = 15;
       filterGlowFilter.strength = 1;
       //新建一个“颜色”变换,改变五角星的颜色,翻得比较生硬,但是做Flash的都知道这个是怎么回事

       var DefaultColorTransform:ColorTransform = new ColorTransform();
       if(ColorPickerEvent.CHANGE)
       {
              //获得颜色
              filterGlowFilter.color = comColorPicker.selectedColor;
              DefaultColorTransform.color = comColorPicker.selectedColor;
              arrayFilters.push(filterGlowFilter);
              //应用滤镜和颜色变换
              mcStar.filters = arrayFilters;
              mcStar.transform.colorTransform = DefaultColorTransform;
       }
}


五角星上层的高光部分是“静态”的,这样的方法有些投机取巧,在应用一些冷色的时候,高光部分显得有些生硬,暖色的效果相对较好。这也是为了性能考虑,写程序的都知道,时空不可兼得。对于五角星的颜色变换还可以使用绘画的方式,填充渐变,这样效果较好,但是代码量较大,取色器得到一种颜色,如何计算出另外一种颜色,我还没有找到答案。

在processing()运行的时候,一定要执行arrayFilters.pop();,否则,五角星周围的光会像浆糊一样越糊越厚。

最后说一下Flash CS3 Pro,Adobe可一定要为开发者多想想啊,这样的开发环境可真的是说不过去,每次都要“艰难”地输入长长的变量(对象)名,提示少的可怜,相较之下,SilverLight就成熟许多。


 

posted on 2008-04-28 23:26  guadan2001  阅读(279)  评论(0)    收藏  举报

导航