atran
30.10.2007, 10:56
Здравствуйте. Столкнулся с интересной проблемой - не задается действие onRelease в цикле. Все происходят в мувике lv. Динамически создается мувиклип, в нем динамической текстовое поле, заносятся значения в несколько массивов (ранее созданных), присваивается действие при нажатии на мувиеклип. Но вот проблема в том что при исполнее действия trace - всегда (на всех мувиках) выдается число 12 (то есть общее кол-во элементов массива + 1 - то есть как бы последнее число а),а по задумывалось что бы при нажатии выдавался a - элемента. Как решить эту проблему?
Элемент кода
...
for (var a:Number = 1; a<=Number(lvlname.length); a++) {
lv.createEmptyMovieClip("but"+a, lv.getNextHighestDepth());
lv["but"+a].createTextField("qwe"+a, a, 0, 0, 400, 140)
lv["but"+a]._x = 50;
lv["but"+a]._y = th;
lv["but"+a].onRelease = function() { trace(a); }
if (a == lvlname.length) {
lv["but"+a]["qwe"+a].text = a+". Итого - "+total;
} else {
if (!lvlpoint[a]) {
lvlpoint[a] = 0;
}
total += Number(lvlpoint[a]);
lv["but"+a]["qwe"+a].text = a+". "+lvlname[a]+" - "+lvlpoint[a];
if (lvlpoint[a] == 0) lv["but"+a]["qwe"+a].setTextFormat(rstat);
else lv["but"+a]["qwe"+a].setTextFormat(stat);
}
th += 20;
}
}
...
rstat и stat это разные текстовые стили.
Элемент кода
...
for (var a:Number = 1; a<=Number(lvlname.length); a++) {
lv.createEmptyMovieClip("but"+a, lv.getNextHighestDepth());
lv["but"+a].createTextField("qwe"+a, a, 0, 0, 400, 140)
lv["but"+a]._x = 50;
lv["but"+a]._y = th;
lv["but"+a].onRelease = function() { trace(a); }
if (a == lvlname.length) {
lv["but"+a]["qwe"+a].text = a+". Итого - "+total;
} else {
if (!lvlpoint[a]) {
lvlpoint[a] = 0;
}
total += Number(lvlpoint[a]);
lv["but"+a]["qwe"+a].text = a+". "+lvlname[a]+" - "+lvlpoint[a];
if (lvlpoint[a] == 0) lv["but"+a]["qwe"+a].setTextFormat(rstat);
else lv["but"+a]["qwe"+a].setTextFormat(stat);
}
th += 20;
}
}
...
rstat и stat это разные текстовые стили.