[天堂
教程][高级]用AS
制作216安全色块
真·AIYI
偶以前在一篇关于Flash
游戏制作的文章中看到过如何制作216色的AS。(我想每个AS爱好者手里都会有一本两本的AS相关书集吧^_^说不定就是你手里的那本书中的AS奥)好了,偶先将那篇文章中关于制作216色的AS源码写出:
01 i = 1;
02 for (r=0; r<=0xff; r += 0x33) {
03 for (g=0; g<=0xff; g += 0x33) {
04 for (b=x; b<=0xff; b += 0x33) {
05 duplicateMovieClip("box", "box" add i, i);
06 cc = new Color(eval("box" add i));
07 setProperty(eval("box" add i), _x, int((i-1)/18)*11);
08 setProperty(eval("box" add i), _y, ((i-1)%18)*11);
09 cc.setRGB(r*256*256+g*256+b);
10 i++;
11 }
12 }
13 }
14 _root.box._visible = false;
//注:在flash编程没有前边的数字(01~14)
在主场景中有两个图层,第一层“box”中有一个MC组件(大小为10*10 px),属性栏中的名称为“box”(也就是在05到08行中的“box”了,在色块MC组件属性栏中是什么名称,在程序中05~08里的就应是什么名称。)第二层是“Action”不用问,就是用来写ActionScript的了。
好,我们先分析一下这几行AS的作用:
01 设置变量i 并为其赋初始值1 为以后复制色块做初始设置。
02~04 for循环 r就是red 了 g就是green了 b就是blue了。
我们都知道RGB色彩的构成,R、G、B分别代表red(红)、green(绿)、blue(蓝)三原色。最小值为0,最大值为255。(什么,256?喂,把0算上才256呢!)十六进制为0x00到0xFF,我们把它们平均分为六份,这六个值分别是0x00、0x33、0x66、0x99、0xCC、0xFF(WHY?为什么要分六份?因为我们做的就是6*6*6所以分六份=_=b 哈,开玩乐的了。因为网络安全色的组成是以0x33进位的,所以我们要让循环累加两两相差0x33,每一次增加0x33。这样,每一种原色有6种选择,那么三种原色搭配有几种呢?6*6*6=?自己去算吧^_^)。
05 不用我多说了吧,就是用来复制box电影的。
06 新建一color对象cc,并使cc与当前循环复制的MC建立关联。
07、08 用来排列216个色块位置的语句。11可以看成是10+1(10就是被复制的MC的X、Y轴长度,那个1就是你要让每个色块之间间隔多大的距离。单位是象素)
int((i-1)/18)*11的作用是将1~18排在同一行,19~36排在同一行……
((i-1)%18)*11的作用是将1,19,37,……在同一列,2,20,38……在同一列……
09 把r、g、b组合转换为RGB色彩值,并将此值设置为color对象cc的新值。(也就是把刚复制出的MC的RGB色彩值设置为当前的新颜色。)
10 也不用我多说吧,i=i+1 进行变量I的累加(没有它可是会死循环的呀

)
11~13 ………………(不好意思,我也不知道

希望
高手指点一二……哈哈)
14 将主场景中的原始MC(box)设为隐藏。
如果你懒得写AS,没问题,下面的
文件就是上面代码的源
文件。[upload=
swf]viewfile.asp?ID=31789[/upload]