库中或外部有一批图片,场景中动态生成一些按钮,动态加载小图片,点击按钮加载大图片,就是这么个效果,以前有人问过,现在还有人在问,于是写了个小例子,发在这里给大家参考。
代码如下:
for (var i = 1; i<=6; i++) {
_root.createEmptyMovieClip("btn_mc"+i, i);
_root["btn_mc"+i].attachMovie("m"+i, "dd", 0);
var mc = _root["btn_mc"+i];
with (mc) {
mc._x = i*70;
mc._y = Stage.height-80;
mc._xscale = 50;
mc._yscale = 50;
}
mc.onPress = function() {
var temp = this._name.substr(6, 1);
trace(i);
trace(temp);
_root.createEmptyMovieClip("bigMap_mc", 0);
bigMap_mc.attachMovie("m"+temp, "m", 0);
bigMap_mc._xscale = 300;
bigMap_mc._yscale = 300;
};
}
当通过for 循环批量指定一些函数时,常犯的一个错误是:直接在onPress 函数体内使用循环体的控制变量,在这里是 i,通过测试可以看到,trace出来的i 值始终是 7,这是因为for 循环在程序开始时很快就执行完了,onPress 函数的执行是在发生点击之时,此时的 i 值已经变成了一个固定值 7,因此,要避免直接使用 i ,而应该从按钮的实例名中分解出一个相关数字来使用。
空MC 加载的图片或是别的MC 都是加载在了它的内部,因此,不会对它的实例名产生影响,主场景中对同一个层深度加载不同的MC,将产生将先前加载的对象覆盖的效果,在前面的代码中,bigMap_mc 是始终加载在主场景的0层,因此,后来的会覆盖前面的,始终只有一个bigMap_mc。
回复Comments
作者:
{commentrecontent}