As2:在循环中创建函数

时间:2013-02-19 20:20:21

标签: flash actionscript-2

我的代码非常简单。

for(i=1;i<3;i++){
        _root.otoczenie["z"+i].onPress = function()
        {
            trace(i)
        }
    }

为什么每个MovieClip(z1或z2)都会向跟踪返回“1”,以及如何以其他方式构建它。

1 个答案:

答案 0 :(得分:0)

首先,按下项目时应该跟踪“3”。

问题是你的所有函数都追踪“i”的值,这是受“for”影响的最后一个。

您必须为每个对象分配值,例如:

for(var i:Number = 1; i <= 2 ; i++) {
    _root.otoczenie["z"+i].myValue = i;
    _root.otoczenie["z"+i].onPress = function () {
        trace(this.myValue);
    }
}

更好的方法是使用委托并使用一个通用函数:

for(var i:Number = 1; i <= 2 ; i++) {
    _root.otoczenie["z"+i].myValue = i;
    _root.otoczenie["z"+i].onPress = mx.utils.Delegate.create(this,onItemPressed);
}

function onItemPressed() {
        trace(this.myValue);
}