flash随机颜色

实现随机颜色最简单的一句就是:
  mycolor = new Color(this);
  //新建一个color对象,名字是mycolor,指定的mc是他本身

  mycolor.setRGB(random(0xffffff));

  //mycolor对象配置RGB颜色,取色范围是从0到0xffffff随机

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

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

  假如我们希望颜色分布在一个区间之内,比如不希望出现接近红色的颜色,好办:

  mycolor = new Color(this);

  mycolor.setRGB(random(0x80ffff));

  因为红色是最大的一位,但是不希望出现接近绿色的,可就不能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,继续random,直到r g b大于等于384 ..

  mycolor.setRGB(r << 16 | g << 8 | b);

  (区域6)

发表评论

您必须登录才能发表评论!