Под конец мучений пришёл примерно к такой схеме. Есть метода класса. В нём:

Код:
...
loop_counter = 0;
sti = 0;
stj = 0;
duration = 1;
intervalID = setInterval(mainLoop, duration);
function mainLoop() {
for (var i = sti; i <= n; i++) {
...
if (sti == i) j = stj; else j = 0;
while (j <= m) {
...
depth = InstanceManager.getNextDepth(this);
MyClip.create(name, depth, ...);
j++;
loop_counter++;
if (loop_counter >= limit) {
loop_counter = 0;
sti = i;
stj = j;
return;
}
}
}
clearInterval(intervalID);
otherCode();
return;
}
Таким образом, за каждый заход строятся объекты MyClip в количестве limit, потом запоминаются текущие счётчики циклов, и осуществляется выход из функции. Если же проход циклов закончен, что действие setInterval аннулируется и идёт переход к финальным действиям метода, внутри которого всё это разворачивается.
Заметил, что скорость построения объектов уменьшается. Под конец оно занимает уже секунды. Проверил через getTimer время и удивился: там к концу выполнения значения высвечиваются порядка 100000. Так как это в миллисекундах, это получается, что последние клипы строятся по 100 секунд каждый.
Никак не могу понять, что происходит.