0

我遇到了非常简单的代码的问题。

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

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

4

1 回答 1

0

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

问题是您的所有函数都跟踪最后受“for”影响的“i”的值。

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

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);
}
于 2013-02-26T10:32:47.960 回答