замедление цикла в рекурсивной функции - PullRequest
0 голосов
/ 03 мая 2010

У меня сложная проблема с рекурсивной функцией. По сути, мне нужно «замедлить» цикл for внутри функции, которая многократно вызывает себя (функцию); Возможно ли это, или мне нужно каким-то образом извлечь рекурсивный характер функции?

function callRecursiveFuncAgain(ob:Object):void{
    //do recursive stuff;
    for (var i:int = 0; i < 4; i++) {
        _nextObj=foo
    callRecursiveFuncAgain(_nextObj);
    }
}

Ответы [ 3 ]

1 голос
/ 03 мая 2010

Попробуйте setTimeout

function callRecursiveFuncAgain(ob:Object):void{
 // do recursive stuff
 var i = 0;
 function callNext()
 {
   if(i++ < 4)
   {
     _nextObj=foo;
     callRecursiveFuncAgain(_nextObj);
     setTimeout(callNext, 1000);
   }
 }
 callNext();
}
0 голосов
/ 04 мая 2010

Ты серьезно? Если у вас медленный компьютер, ваш ЦП будет иметь большую нагрузку, чем быстрый ЦП, который НИКОГДА не будет работать в ситуации, которая требует хорошего решения. Это даже не близко к дерьмовому решению.

Попробуйте использовать setTimeOut, находящийся в пакете flash.utils http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html.

пример использования: setTimeout (delayedFunction, delay, arguments); Обратите внимание, что задержка выражается в миллисекундах.

Проверьте функцию clearTimeOut () (flash.utils), чтобы очистить свой setTimeOut, когда вы закончите с ним.

0 голосов
/ 03 мая 2010

Вы должны использовать некоторую функцию, которая будет ждать некоторое время, или другую функцию, которая будет загружать много ресурсов процессора и, следовательно, замедлять вашу рекурсивную функцию. Другим способом было бы использовать отладчик и точки останова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...