Flash中MC颜色的实时变换
用过PhotoShop等图像处理软件的人都知道,PhotoShop的颜色选择可以通过改变Red,Green,Blue的数值来得到,这次要做的实例就是通过Flash里面的color对象中的setTransform方法来实现这种改变颜色的效果。
(1)首先在舞台上画一个矩形框,并把填充改为黑色(16进制值是000000)。然后把它转换成一个MovieClip。(有关颜色的16进制表示方法请参考有关资料)。
(2)选择Window>Panels>Instance,并在name中命名为ant.如下图
(3)在此MovieClip上易做图以下脚本(选Expert Mode可支持拷入)
onClipEvent (enterFrame) {
myColor = new Color(this);
myColorTransform = new Object();
myColorTransform.rb = red;
myColorTransform.gb = green;
myColorTransform.bb = blue;
myColorTransform.aa = alpha;
myColor.setTransform(myColorTransform);
}
分析下上面的脚本,上面这些脚本也是此实例的全部脚本了,onClipEvent的用法已遇到过。这里最主要的Color对象。首先用new Color来创建一个新的Color对象myColor。this(是MovieClip名)指的是此Color对象就是针对此MovieClip而言的。这里先说明一下下面这些参数。
ra是红色成分百分比(-100到100)
rb是红色成分偏移量(-255到255)
ga是绿色成分百分比(-100到100)
gb是绿色成分偏移量(-255到255)
ba是蓝色成分百分比(-100到100)
bb是蓝色成分偏移量(-255到255)
aa是alpha(不透明度)成分百分比(-100到100)
ab是alpha(不透明度)成分偏移量(-255到255)
接下来再分析,后面的语句是先使用Object构造器创建一个颜色改变对象再使用setTransform方法把这个颜色传给上面的Color对象。实际上就是创建了myColorTransform这个新的对象,然后用参数rb,gb,bb,aa,我这里用的全是偏移量。而且每一个都赋于一个变量。这里的red,green,blue,alpha都是变量,这些是用来传递偏移值的。其实你也可这样表达.myColorTransform={rb:'red',gb:'green',bb:'blue',alpha:'aa'}。这些完成之后如下图所示。(4)接着用text tool在舞台的右边画8个文本区,并把右边四个设置如下图
这里左边的四个是一些说明的文字,用一般的文本就行。主要是右边的四个,选用Input Text是为了在运行中输入偏移量。在Variable用ant.red下面的分别为ant.green,ant.blue,ant.alpha它们支持对应的是上面MovieClip里的变量值。在每个前加了ant为了说明这个red变量是在ant这个MovieClip中。并把上面三个初始值设为0,最下面的设为100。也就是对应了R,G,B为000000黑色,而且不透明度为100,即一开始就是可见的。
最后说明一下:在用onClipEvent()的时候,这里一定要用enterFrame,目的是为这个脚本不断的循环执行,这样当你改变Input当中的值的时候,MovieClip才有颜色变化的反应。
做好以后运行情况如下图,你可以通过改变文本框中的数值来改变左边MovieClip的颜色和不透明度。