当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > RGB颜色action自定义教程 — 色光叠加篇

Flash动画制作
Flash绘制简单的楼梯动画场景
关于影片剪辑在主场景中位置修改的Flash技巧
Flash教程:单选题的制作
Flash绘画技巧实例:鼠绘好看的水仙花
Flash人物走动动画的制作技巧分析
Flash钢笔工具绘图技巧详细分析
Flash辅助线轻松辅助工具绘制女孩脸部
Flash新手鼠绘教程(2):熟悉鼠绘工具
Flash新手鼠绘教程(1):怎样学习鼠绘
Flash新手鼠绘(3):漂亮的卡通花草场景
FLASH CTRL+C SHORTCUT IN IE 快捷键在IE中失效
Flash 绘画技巧 投影滤镜设置阴影
Flash 视频广告的定位兼容性问题
SWFText轻松制作Flash贺卡
人物走动Flash动画的制作技巧分析
Flash钢笔工具绘图的技巧详细讲解
Flash新手鼠绘(9):好看的月季花
Flash新手鼠绘(10):美丽逼真的郁金香
Flash新手鼠绘(11):逼真的瓢虫
FLASH8.0鼠绘实例(1):时尚气质美女

Flash动画制作 中的 RGB颜色action自定义教程 — 色光叠加篇


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-22   浏览: 36 ::
收藏到网摘: n/a

    通过前几篇教程,相信大家对于RGB颜色方面的编程应该已经是得心应手了吧?还有一个方面我们没有涉及,那就是:颜色叠加。等这一篇写完,我想我的这个RGB教程也该结束了,因为我肚子里可就只有这么点东西了。

    这个色光叠加部分,更多的是一种想法,连算法都算不上。因为这一部分连可以copy了直接用的代码都没有,只有一个swf文件,还是为了演示用的,不过我想这个swf里模仿photoshop的取色器大概还是有一点意思的,因为这不是本节的重点,大家还是自己分析源码吧,看过上一节和这一节后,应该不难理解!

    言归正传,我们都知道可以用RGB的3色值来表示一个颜色。但是这并不是说我们在实际中看到的眼色就是由3原色光叠加组成的(计算机屏幕自然如此),而是说这种光的颜色和对应的3色光叠加对人眼的刺激是相同的,也就可以等效起来了。因此或许如果对于别的生物,比如猫,因为眼睛构造的不同,我们看来屏幕上和实物完全相同,猫看起来却不一样。这一部分在学科划分上属于色度学和心理学(交叉),大家有兴趣可以自己找资料看一看。

    说这些废话是为了分清楚一件事情,光叠加和色(比如水彩)叠加。红光加上绿光看起来是黄光,但是红墨水掺上绿墨水可就差不多是黑的了。我们在计算机上所作的,都是光叠加的内容。

    如果是一束ff0000的光和一束00ff00的光线叠加,是什么颜色?不错,是黄色:0xffff00.这也种简单的叠加方法其实也适合于更复杂的情况。

    看到这里大家可能有一个担心,如果一种色光的强度超过255怎么办?很简单,超过255就把他设置为255,可不要进位啊!呵呵,开个玩笑。其实,这个担心是多余的,我们能证明,实际的情况中,永远也不会出现某一色光强度超过255的情况,最高等于255.

    我觉得色光叠加最核心的问题是:如果是一个半透明的东西覆盖在另一个物体上,颜色怎么计算?

    这可能是很多网友最头疼的问题之一,我也是和cnmusa讨论这个到问题才开始深入的思考色光叠加问题的。为简单考虑,我们先考虑整块的色块。一个色块的alpha值是30,意味着什么?就是说他本身的颜色我们可以看到30%,有70%(1-30%)的底色可以透过它射上来。是不是这个样子的呢?我们来做一下验证,看下面这个flash.

    页面:点这儿参观

    源代码(34K):colortest5.zip

    在这个flash,你可以自己选择底色、覆盖层颜色、覆盖层透明度,然后看看我根据刚才那个原理预测的颜色是否和实际颜色相同。因为用了很多Math.floor(),肯定有误差,但是到目前我自己还没发现误差很大的情况。基本上可以证明,我关于半透明覆盖的猜想是正确的。

    那现在我们可以得出计算公式了:叠加色r=覆盖色r*覆盖alpha+底色r*(1-覆盖色alpha);绿和蓝也是如此,然后再3色组合起来。

    在我的这些flash文件里,rgb都是自己定义的,开始就是分立的。如果不是这样,那我们如果怎么得到一个诸如0xf456c7这样的颜色代码的rgb分立值?很简单:color=0xf456c7;r=(color&0xff0000)>>16;g=(colo