Показать сообщение отдельно
Старый 21.07.2008, 21:49
Ruffus вне форума Посмотреть профиль Отправить личное сообщение для Ruffus Найти все сообщения от Ruffus
  № 20  
Ответить с цитированием
Ruffus
 
Аватар для Ruffus

Регистрация: Apr 2008
Сообщений: 82
Под конец мучений пришёл примерно к такой схеме. Есть метода класса. В нём:
Код:
...
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 секунд каждый.

Никак не могу понять, что происходит.


Последний раз редактировалось Ruffus; 21.07.2008 в 21:57.