我遇到了非常简单的代码的问题。
for(i=1;i<3;i++){
_root.otoczenie["z"+i].onPress = function()
{
trace(i)
}
}
为什么每个 MovieClip(z1 或 z2)都将“1”返回到跟踪,以及如何以其他方式构建它。
我遇到了非常简单的代码的问题。
for(i=1;i<3;i++){
_root.otoczenie["z"+i].onPress = function()
{
trace(i)
}
}
为什么每个 MovieClip(z1 或 z2)都将“1”返回到跟踪,以及如何以其他方式构建它。
首先,当您按下项目时,这应该跟踪“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);
}