当前位置: 首页 > 图文教程 > Flash动画 > Flash动画制作 > RGB颜色action自定义教程(2) — 随机颜色篇

Flash动画制作
赤手空拳下载Flash
创建一个Flash站点的十大技巧
用Flash制作Google搜索程序
枫桥夜泊下 遮罩效果的动态文本
Flash MX 2004 ActionScript图文教程(十二)
Flash实例教程 扫描文字效果
Flash MX 2004 ActionScript图文教程(十三)
快速制作您的flash图表
Flash MX 2004 ActionScript图文教程(十四)
Flash实例教程 变幻的字母
Flash MX 2004 ActionScript图文教程(十五)
Flash实例教程 相约北京 扬帆青岛
Flash教程实例 光线特效文字
Flash课件实例 画正多边形
Flash课件实例 平行四边形法则
Flash实例教程 小孔成像课件
精简Flash文件体积七法
Flash教程实例:水中浮动的文字
金鸡贺岁!Flash制作鸡年新春动画贺卡
Flash MX 2004新特性实例学习一

Flash动画制作 中的 RGB颜色action自定义教程(2) — 随机颜色篇


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

  前面基础篇里我们讨论了怎么设置指定的颜色,我觉得不能算是很难的。但是一位朋友通过qq告诉我,他觉得有一点吃力。对此我很抱歉,以前我一直觉得有些ction的基础问题是不用多解释的,大家查查参考手册就是,现在看来朋友们的实际情况还是差别很大的,以后我会在这些方面注意一些,每一个新语句都加上注释。

  上次说得是颜色设置的基础,代码实际上只有两三句,从现在看时我们来继续说说颜色问题的一些深入问题,大概代码会逐渐的多起来,有我写的不明白的地方,大家结合提供的源文件看一下,或者在后面跟贴提问。

今天这一讲教程咱们看看随机颜色的问题,这个问题论坛上常有讨论,算是个老问题了。

我觉得实现随机颜色最简单的一句就是:
mycolor = new Color(this);
//新建一个color对象,名字是mycolor,指定的mc是它本身
mycolor.setRGB(random(0xffffff));
//mycolor对象设置RGB颜色,取色范围是从0到0xffffff随机

  好像已经没有办法使代码更少了吧?如果有,告诉我。我这一篇教程里面随机比较多,每一个都单独做swf很麻烦,我于是干脆做到一起来,用区域来区别。并且提供了flash源文件,大家那我提供的代码替换掉ball这个mc里的action,可以自己预览一下看看,还可以自己随便做做修改看看。这一段代码是区域1。

页面:点这儿参观
源码(6K):
colortest1.zip

  但是我觉得这样最不好的方面在于,得到的很多色彩效果可能不太好,比如太接近白色不容易和背景区别,或者颜色太深了感觉不美观。

如果我们希望颜色分布在一个区间之内,比如不希望出现接近红色的颜色,好办:
mycolor = new Color(this);
mycolor.setRGB(random(0x80ffff));
(区域2)

  因为红色是最大的一位,但是不希望出现接近绿色的,可就不能random(0xff80ff)了,不信你自己改改试试。这是因为在random函数看来,0x00ff00也是比0xff80ff小的,没办法了吧。

  我的改进方法是三色分别random,然后再用“左移 << ”和“或 | ”的方法组合成一个数值。这种方法我在基础篇就用过,我觉得算不得新方法了。这是全色系的随机函数:
mycolor = new Color(this);
mycolor.setRGB(random(255)<<16|random(255)<<8|random(255));
(区域3)

  如果仅仅是这样用,和开始那种方法比,除了显得深奥,实在是没什么优点了。不过我们想再进一步做修改就容易了,刚才那个不要绿色,就可以:
mycolor = new Color(this);
mycolor.setRGB(random(255)<<16|random(128)<<8|random(255));
(区域4)

  如果想得到红色0xff0000和黄色0xffff00之间的颜色,因为红色和黄色之间只有g在改变,可以把r和b固定,仅仅random绿色:
mycolor = new Color(this);
mycolor.setRGB(255<<16|random(255)<<8|0);
(区域5)

  再比如不希望得到太深的颜色,只需要使random值不要太小,比如rgb三色加起来不小于384吧:
mycolor = new Color(this);
while (r+g+b<384) {
    r = random(255);
    g = random(255);
    b = random(255);
}
//默认rgb都为0,循环执行;如果rgb相加小于384,继续r