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) 收藏 举报
浙公网安备 33010602011771号