首先要感谢闪友的PLMM,我也做了一个马赛克的AS应用,咱们来交流交流。。。。。。
[全屏欣赏]你能学到的技术包括:复制语句和删除复制MC的语句,随机数的灵活应用,for语句的用法,简单的数组应用,判定语句等等。
第一步:先来看看它的结构:参考图(1):第一层背景图,放的是PLMM;第二层灰块,放的是马赛克的一个元件;第三层空的AS,放的是一个空白的MC,实例名为“as”,里面都是AS命令;第四层B和WEN,放的是按钮和动态文本框。
第二步:首先来做一个正方形,宽度为20像素,灰度#999999,转换为符号;再做一个动画剪辑符号,将这个正方形放入,在第6帧插入要害帧,参考图(2):调整透明度为30,在第7帧插入要害帧,这样第7帧便与第6帧的内容相同,再在第12插入一要害帧,将第一帧复制粘贴到第12帧。这样第1帧和第12帧就是透明度为100的灰块,设置移动渐变动画。做好后给它起实例名为“mc”;
第三步:来实现灰块的随机播放,在灰块实例“mc”上捆绑以下代码:
onClipEvent (load) {//动画载入时
num=random(12)+1;//让num在1~12之间取随机值
this.gotoAndPlay(num);// this指的是对本身的调用,让此MC播放取得的随机帧数。
}
第四步:来制作那个空的MC,实例名为“as”,新建一个MC,在第一帧上写如下代码:
stop();
_root.mc._visible=0;
mcw=20;
for (i=0; i<12; i++) {
for (j=0; j<10; j++) {
duplicateMovieClip("_root.mc", "mc"+i+j, 10*i+j);
_root["mc"+i+j]._x = mcw*i;
_root["mc"+i+j]._x = mcw*j; }
}
//***********
(想看逐行的解释请看下面。)
stop();
_root.mc._visible=0;
mcw=20;
// 方块的宽度。
for (i=0; i<12; i++) {
// 循环产生12个数。0~11
for (j=0; j<10; j++) {
// 循环产生10个数。0~9;乘到一块就是120块。
duplicateMovieClip("_root.mc", "mc"+i+j, 10*i+j);//要注重深度
// 复制应该都知道。
_root["mc"+i+j]._x = mcw*i;//用数组来存储那些复制出来的MC名,还加上了路径
// 第一个循环复制出来的为mc00、01、02、03...;对应的X坐标为0
// 第二个循环复制出来的为mc10、11、12、13...;对应的X坐标为20*1=20
// ......
_root["mc"+i+j]._y = mcw*j;
// 第一个循环复制出来的为mc00、01、02、03...;对应的Y坐标为0、20、40、60
// 第二个循环复制出来的为mc10、11、12、13...;对应的Y坐标为0、20、40、60
// ......
}
// 第一个循环复制出来的为mc00、01、02、03...;对应的坐标为(0、0)(0、20)(0、40)...
// 第二个循环复制出来的为mc10、11、12、13...;对应的坐标为(20、0)(20、20)(20、40)...
// 可以看出来,它是竖着一列一列的设置。
}
//*——————————
然后在第二帧上写代码:stop();
第五步:制作到这里,你可以测试了,效果不错吧!我又追加了一点功能。在按钮上的代码你一看就明白了,代码如下:
on (release) {
agg = agg+1;
if (agg%2) {//判定奇偶数,若为奇数,停在第二帧;若为偶数,停在第一帧
as.gotoAndStop(2);
_root.wen="接着闪吧,朦胧的感觉更好";//文本显示的文字
for (i=0; i<12; i++) {//只是设了个循环,还是产生那些MC时的循环
for (j=0; j<10; j++) {
removeMovieClip(_root["mc"+i+j]);//把产生出来的新的MC删掉
}
}
} else {
as.gotoAndStop(1);
_root.wen="别闪了,让我看清楚点";//文本显示的文字
}
}
写到这里,不知有没有漏掉什么,反正核心的代码都在上面了,至于一些细节上的东东请你参考源码吧!!!
点击浏览该文件