2013-02-19 103 views
0

我遇到了非常簡單的代碼問題。As2:在循環中創建函數

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

爲什麼每個MovieClip(z1或z2)都會向跟蹤返回「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); 
}