什么都不用管,将下面的AS代码copy下来,放到一个新建Flash文档的第一帧中。 Ctrl+回车测试,看看会出现什么?
createEmptyMovieClip("aiyi", 1); Line = 31; Movieclip.prototype.box_line = function(Line_L, Line_R, l) { this.lineto(Line_L, Line_R); this.lineto(Line_L+l, Line_R); this.lineto(Line_L+l, Line_R+l); this.lineto(Line_L, Line_R+l); }; for (i=0; i<248; i += Line) { for (j=0; j<248; j += Line) { with (_root.aiyi) { moveto(j, i); i%2 == 1 ? (j%2 == 1 ? beginfill(0x000000, 100) : beginfill(0xffffff, 100)) : (j%2 == 0 ? beginfill(0x000000, 100) : beginfill(0xffffff, 100)); linestyle(0, 0x000000, 100); box_line(j, i, Line); endFill(); } } }
下面我来解释一下是如何用AS来实现的:
createEmptyMovieClip("aiyi", 1); Line = 31;//设置方块的边长 Movieclip.prototype.box_line = function(Line_L, Line_R, l) {//用来画方的构造函数 this.lineto(Line_L, Line_R); this.lineto(Line_L+l, Line_R); this.lineto(Line_L+l, Line_R+l); this.lineto(Line_L, Line_R+l); }; //下面的代码则利用奇偶来判断是否填充黑或白色…… for (i=0; i<248; i += Line) { for (j=0; j<248; j += Line) { with (_root.aiyi) {//with动作,用with后不必重复书写对象的名称和路径。 moveto(j, i); i%2 == 1 ? (j%2 == 1 ? beginfill(0x000000, 100) : beginfill(0xffffff, 100)) : (j%2 == 0 ? beginfill(0x000000, 100) : beginfill(0xffffff, 100)); /* 下面偶就大概说一下编程思路,当i为25(奇数)时,i%2==1为25%2==1,反回true值,当返回true时,执行(j%2==1?beginfill(0x000000, 100):beginfill(0xffffff, 100))。而这又是一个“条件” j%2==1?beginfill(0x000000, 100):beginfill(0xffffff, 100): 先计算j%2的值,如当j=25时,返回T,那么执行beginfill(0x000000, 100)——0x000000为RGB值,也就是黑色 ,后面的100是Alpha值,也就是完全不透明了。 第一次循环可以将第一个方块填充为黑色。 第二次循环:i=25,j=50时,还是执行(j%2==1?beginfill(0x000000, 100):beginfill(0xffffff, 100))。而这次j=50,50%2==1为F,那么会执行beginfill(0xffffff, 100)——即填充为白色,Alpha值为100% 那么第二次循环的目的:将第一行的第二列的方块填充为白色…… 以此类推…… 当i进行第二轮循环时: 即i=50时:50%2==1返回F,这时执行(j%2==0?beginfill(0x000000, 100):beginfill(0xffffff, 100)。再看j值,25%2==0返回F,执行beginfill(0xffffff, 100)——即填充为白色。 这次循环后,后将第二行的第一列的方块填充为白色…… 剩下的就不用遇多说了吧,一样的,只要明白其一就能明白全部。 */ linestyle(0, 0x000000, 100);//在绘制的路径中调用 lineStyle 方法来为路径中的不同线条段指定不同的样式。 box_line(j, i, Line);//调用上面刚才定义的box_line构造函数。 endFill();//应用填充。 } }
还等什么呢,自己动手试一下吧:)
|