非常に単純なコードに問題があります。
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);
}