и снова массив мувиков: нужен совет
Уважаемые гуру флэша.
Я тут уже всю голову сломала, что не так. Подскажите.
Есть массив объектов с набором полей. Из каждого элемента массива создается мувик и присоединяется к массиву мувиков. Массив объектов изменяется во времени. То есть, если массив содержит 5 объектов, мы их отрисовываем, запихиваем мувики в массив мувиков M, массив с исходными объектами обнуляем. Зтем через несколько секунд спрашиваем: а не стал ли массив объектов не 0. Если там что-то есть, создаем опять из него мувики, запихиваем в массив М.
Проблема в том, что после зоздания пустого мувика с целью отрисовки, массив мувиков M ведет себя странно, а именно удаляет по элементу массива. ПОЧЕМУ???
Код:
function draw_sms() {
trace("_root.smsUncheckedArray: "+_root.smsUncheckedArray);
for (g=0; g<_root.smsUncheckedArray.length; g++) {
i = _root.M.length;
trace("i="+i);
trace("g="+g);
trace("до "+_root.M);
_root.createEmptyMovieClip("sms" +i, i);
trace("после создания смс "+_root.M); _root.M[_root.M.length] = (eval("sms"+i));
trace("после подсоединения:"+_root.M);
_root.M[_root.M.length-1]._x = 2;
with (eval("sms"+i)) {
eval("sms"+i).id = _root.smsUncheckedArray[g].id;
T1 = "Дата: "+_root.smsUncheckedArray[g].date+"\nНик: "+_root.smsUncheckedArray[g].nick+"\nНомер: "+_root.smsUncheckedArray[g].subno;
T2 = _root.smsUncheckedArray[g].text;
T = T1+T2;
var metrics1:Object = my_fmt.getTextExtent(T1, sms_w);
var metrics2:Object = my_fmt.getTextExtent(T2, sms_w);
createTextField("my_txt", i+700, 0, 0, sms_w, metrics1.textFieldHeight+1);
//////////trace("высота шапки "+metrics1.textFieldHeight+1);
createTextField("my_txt1", i+900, 0, metrics1.textFieldHeight+1, sms_w, metrics2.textFieldHeight+1);
//////////trace("высота текста "+metrics2.textFieldHeight+1);
my_txt.visible = true;
my_txt.multiline = true;
my_txt.wordWrap = true;
my_txt.type = "dynamic";
my_txt.border = true;
my_txt.text = html;
my_txt.htmlText = T1;
my_txt1.visible = true;
my_txt1.multiline = true;
my_txt1.wordWrap = true;
my_txt1.type = "dynamic";
my_txt1.border = true;
my_txt1.background = true;
my_txt1.backgroundColor = 0xF9F8F2;
my_txt1.text = html;
my_txt1.htmlText = T2;
//
if (i eq 0) {
_root.M[i]._y = 25;
} else {
trace("i="+i);
_root.M[i]._y = _root.M[i-1]._y+_root.M[i-1]._height+2;
}
eval("my_txt").setTextFormat(my_fmt);
eval("my_txt1").setTextFormat(my_fmt);
attachMovie("btM", "btM", 100+this.getNextHighestDepth());
attachMovie("btY", "btY", 200+this.getNextHighestDepth());
attachMovie("btN", "btN", this.getNextHighestDepth());
attachMovie("btOK", "btOK", 300+this.getNextHighestDepth());
attachMovie("btUndo", "btUndo", 755+this.getNextHighestDepth());
btOK.enabled = false;
btOK._visible = false;
btUndo.enabled = false;
btUndo._visible = false;
btOK._x = _width-45;
btOK._y = 4.5;
btOK._height = 20;
btOK._width = 20;
btUndo._x = _width-23;
btUndo._y = 4.5;
btUndo._height = 20;
btUndo._width = 20;
btY._x = _width-70;
btY._y = 4.5;
btY._height = 20;
btY._width = 20;
//
btM._x = _width-47;
btM._y = 4.3;
btM._height = 20;
btM._width = 20;
//
btN._x = _width-24;
btN._y = 4.5;
btN._height = 20;
btN._width = 20;
//
//
mask._width = Stage.width;
mask._height = Stage.height-49;
mask._x = 0;
mask._y = 25;
mask.duplicateMovieClip("mask"+i, i+10000);
mask._visible = false;
eval("sms"+i).setMask(eval("mask"+i));
}
}
_root.smsUncheckedArray.length = 0;
trace("Массив объектов после обнуления: "+_root.smsUncheckedArray);
this.st_hide_uncheked.text = ("В очереди: "+_root.M.length+" смс");
}
И то, что даёт трэйс:
root.smsUncheckedArray: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
i=4
g=0
до _level16394.sms0,_level16394.sms1,_level16394.sms2,_level16394.sms3
после создания смс _level16394.sms0,,_level16394.sms2,_level16394.sms3
после подсоединения:_level16394.sms0,,_level16394.sms2,_level16394.sms3,_level16394.sms4
|