了解Color对象(Understanding the Color Object)
Color对象允许你将color与alpha(透明)效果应用到movieclip(影片剪辑)上,使之在极大程度上相当于一个过滤器。当要应用一个movieclip,它会应用到那个movieclip里面的一切。这就包括了所有线条,所有填充以及存在于那个movieclip的任意一个symbol(元件),无论它们本来的颜色。
setRGB () 是一个很绝对的颜色效果,所谓的绝对是指一旦设置成了指定的颜色,这个颜色就是整个Movieclip绝对拥有或者说成是唯一拥有的颜色(再声明一遍,这是会应用到那个movieclip里的一切,因为它们是那个movieclip的组成部分)
setTransform () 允许对颜色的增加有更多的控制。实际上,setRGB是根本没必要的,因为setTransform就有与之相同的效果。setTransform仅仅是给你提供了更多的参数选项从而使之使用起来更不容易。不过,你通过运用setTransform来实现对颜色的绝对处理(既可很微妙地处理一个movieclip的颜色,更可以将当前颜色设置成与之相反的颜色)
讲到现在,这些都是一个color对象的方法。一个color对象是这些“过滤器”的控制器,但不是它自身的过滤器。color对象非常类似下拉菜单——你可以打开它来选择你需要的过滤器。当然,打开菜单之前你必须选好该菜单行为起效的那个movieclip。也就是:
colorObj = new Color (selected_movieclip) ;
然后,你就选择需要的过滤器,相应的效果就会应用到相应的movieclip上(无论它是通过setRGB还是setTransform在起作用)。
因为color对象充当菜单的角色,删掉它仅仅意味着你无法再次改变movieclip的颜色属性(除非你又为这个movieclip定义了一个color对象)。删掉菜单不会删掉过滤器。实际上,任何应用于movieclip的效果就是一个颜色过滤器,就如我之前提到的——setRGB仅仅是setTransform的一个简易版本。因此,我们要弄懂的就只有一个,那就是通过setTransform可以得到什么效果。在movieclip上使用setTransform并不是在其原有颜色上做添加,而是将它变为另一个新的设置。
每一个movieclip都有一套默认的(transform)颜色变换参数:
ra = 100 (范围从-100到100)
rb = 0 (范围从-225到225)
ga = 100 (范围从-100到100)
gb = 0 (范围从-225到225)
ba = 100 (范围从-100到100)
bb = 0 (范围从-225到225)
aa = 100 (范围从-100到100)
ab = 0 (范围从-225到225)
在Flash的操作界面中,选定一个剪辑,然后在属性面板中选中色彩:高级 > 设置…之后你就可以看到上面的参数。
用setRGB是将上面的参数转变为你所传递的任意颜色。比方说,若你要将RGB设置为蓝色,则参数改变如下:
ra = 0
rb = 0
ga = 0
gb = 0
ba = 100
bb = 255
aa = 0
ab = 0
若你是要删掉一个movieclip的颜色效果,其实就是删掉从transform对象中特定的那个颜色,这就意味着将剪辑设置为最初的那一套transform设置参数,即:
ra =100
rb = 0
ga = 100
gb = 0
ba = 100
bb = 0
aa = 100
ab = 0
这也可用手动来实现:
colorObj.setTransform ({ra:100, rb:0, ga:100, gb:0, ba:100, bb:0, aa:100, ab:0}) ;
或是简单点,在对movieclip进行下一步操作之前用getTransform保存其transform参数,然后在需要重置时再用它。但这里的getTransform的对象必须同setTransform的对象保持一致,用getTransform 也仅仅是避免了你要像上面的代码那样将参数写下来。值得注意的是因为setTransform的绝对颜色应用行为,它并不能删掉这些颜色,但它可以暂存一个movieclip和删掉你应用在其上任意一个过滤效果。
现在,可能你会想,transform中的一系列值代表什么。你可以看到的是,每一个信道(channel)——分别是红、绿、蓝和alpha——都是由A(-100到100)和B(-255到255)两部分组成。
A代表当前颜色的白分比。、从默认中知道每个剪辑当前颜色的A值均为100(100%),意思是说该剪辑的红、绿、蓝和alpha部分都是100%可见的。比如,你有一个红色(0xFF0000)的正方形,若你把ra(红色的A值)降到0(0%),则正方形将会变成黑色,因为你刚才的操作相当于是“夺”去了剪辑的所有红色,而剪辑仅仅是红色,没有其它颜色存在那你就只能看到黑色。一个紫色,或深红色(0xFF00FF)的剪辑经上述操作后将变成蓝色,因为深红色是由红色与蓝色(0x0000FF)组成,将剪辑的ra减为0%其实是删掉了所有的红色而仅蓝色保留可见。A值也可从0%降至-100%,但对于普通剪辑的颜色,这是没有意义的,除非介入B值。
B值代表附加色。B值使你可以为一个本身没有颜色的剪辑附加上颜色。由于颜色值是从0到255的,所以B值理所当然的也在这一个范围内。给你一个黑色(0xFFFFFF)的movieclip,把它的rb(红色的B值)改为255后,它就成红色的了。一个黑色剪辑的A值已经是100%,而在黑色中我们也不可能使红色也同样地显示出来。为了显示红色,我们只能“附加”给它,这便是B值的用途。但B值不仅有附加作用,它还有“拿掉”颜色的作用,而-255便属于这一部分作用。很自然,对黑色剪辑谈“拿掉”是没有用的,于是我们又回到先前红色剪辑的例子上。一个红色剪辑的ra值是100%,将-255赋予给其rb值后它就变成黑色的了。现在,由于红色剪辑已经是红色了,因此你将它的rb值赋为+255,那只会让它更红,但这在视觉上看不出来效果;但是ra值可用在负值范围上,于是当ra设为-100%时,剪辑就又会由红色变为黑色。
当用setRGB将一个元件设置为红色时,可以看到设置过程实际上是先将A值和B值都设为0(完全删掉所有颜色),再把两者调至呈红色的最大值以保证红色的绝对性——这便是setRGB的特性。删掉以前设置的颜色仅仅是将A值和B值分别重置为100%和0以确保元件只是有100%的普通色和0的附加色
最后再提醒你一下,所有的这些操作均发生在整个剪辑以及它全部内容上。打个比方,这些颜色就好比覆盖在剪辑上的着色剂一般,它一定会往下渗透以致剪辑内部的一切都会被染上相应的颜色。因此,若你想改变只是movieclip中特定的填充或是笔画,那么你就有必要将这些彻底分开——各自都有自己的movieclip——以便分别控制。
<the source file :
http://senocular.com/flash/tutorials/colorobject/, translated by Deackie>