for 循环批量设置MC 函数的示例。

      Flash课件设计 2007-4-24 13:35

库中或外部有一批图片,场景中动态生成一些按钮,动态加载小图片,点击按钮加载大图片,就是这么个效果,以前有人问过,现在还有人在问,于是写了个小例子,发在这里给大家参考。

代码如下:

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。

标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}