2010-05-02 2 views
0

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

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

Почему вы хотите замедлить цикл? Чего вы пытаетесь достичь? – M4N

+0

Идея замедления функции звучит скорее как ужасный взлом. – Allan

+0

Какое замедление связано с рекурсией? Если вы хотите что-то замедлить, метод тот же, независимо от того, выполняете ли вы что-то итеративно или рекурсивно. – sigfpe

ответ

0

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

1

Try 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

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

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

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

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

Смежные вопросы