if (k != 1) { //这时如果这个mc上的变量k不为1
_root.i++; //主时间轴上的变量i加1;
k = 1;
//在这个mc上设置变量k=1(使一个mc拖动正确时,主时间轴上的记数变量i只加1次)
}
if(_root.i==6){ //如果主时间轴上的记数变量i等于6时(图形都正确拖动完毕)
_root.nextFrame();//主时间轴跳到下1帧停下;
}
} else { //如果这个mc和动态文本wz1不重叠或相交
_x = x;//把这个mc的坐标设置为前面得到的这个mc的坐标的数值
_y = y;
}
}
我们可以检测这段代码的正确性,然后我们可以把这段代码复制在其他5个mc上,只消把其中的wz1改为相应的wz2~wz6即可。
点击查看动画效果<
既然这六个mc上的代码都非常接近,我们应该想办法用函数的办法来处理。这六个mc上的代码中只有拖动的mc不同以及检测的文本不同,因此,这个自定义函数应该有两个参数。
例3 打开3.4.3fla文件.在主时间轴第1帧上加上如下代码:
复制代码
stop();
i = 0;
function stlx(md, mc) { //md为拖动的mc,mc为检测的文本
stopDrag();
if (md.hitTest(mc)) {
if (md.k!=1) { //变量k是md上的,因此这里写成md.k
i++; //自定义函数是写在主时间轴上,因此主时间轴上的变量可以不用写路径
md.k = 1;
}
if (i == 6) {
nextFrame();
}
} else {
md._x = md.x;
md._y = md.y;
}
}
在mc上的代码就可以大为简化
在圆(tx1_mc)上的代码就可以写成:
复制代码
on (press) {
x = _x;
y = _y;
startDrag(this, true);
}
on (release) {
_root.stlx(this, _root.wz1);
//是在mc上写的调函数脚本,因此这里的stlx()和wz1都应该加上路径。
}
把tx1_mc上的代码复制到其它5个mc上,只把其中的wz1换成wz2~~wz6就行了。
为了可以重复做这个练习,在主时间轴第2帧上加上一个按扭,在按扭上加上:
on (release) {
prevFrame(); //回到第1帧










