闪客动漫天地
欢迎 游客 , 注册 | 登录 | 会员 | 界面 | 简洁版本 | 在线 | 帮助
闪客动漫天地论坛

发表新主题 回复该主题
本主题被查看632次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第   上一主题   下一主题
标题: 了解Color对象(Understanding the Color Object)
新手上路
UID: 120402
来自:
精华: 0
积分: 4
帖子: 4
注册: 2007-6-13 13:01:00
状态: 离线
威望: 0.00
金钱: 0.85 元
只看楼主 2008-07-04 10:02
了解Color对象(Understanding the Color Object)
了解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>
#1  
发表新主题 回复该主题
本主题被查看632次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第







现在的时间是 2008-08-30 07:19:21
沪ICP备05003105号

版权所有 闪客俱乐部  
         Powered by Discuz!NT 1.0.6666    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.448 seconds