Итак, я разработал отличный способ создания эффекта пиксельной очистки, с клипами с пикселями, вложенными в строки. Я создал цикл, который проходит через каждую строку, а затем еще один цикл внутри этого цикла для пикселей в каждой строке. Затем я использую случайное число между 1-0 для задержки до того, как он будет обрабатывать пиксель. Я использовал Greensock для анимации и отлично работает.AS3: Запирание цикла for на каждом проходе
Одна из проблем, я не могу остановить цикл for для строк, и каждая строка появляется сразу. Тем не менее, пиксели расположены в шахматном порядке, и это хороший эффект, но я хочу, чтобы он перемещался слева направо. Так что мой код выглядит следующим образом: (Кстати, да, AS3 действительно есть SetTimeout и он работает отлично)
function stripeWipeUp(stripe:MovieClip):void {
var total = stripe.numChildren;
for (var i:int = 0; i<total; i++) { // the rows
trace(i);
setTimeout(function() {
trace("setTimeout: "+i);
var row:MovieClip = stripe.getChildAt(i) as MovieClip;
var pixTotal = row.numChildren;
for (var j:int = 0; j<pixTotal; j++) { the pixels
var pix:MovieClip = row.getChildAt(j) as MovieClip;
var num = Math.floor(Math.random()*100)/100; // the delay
pixUp(pix, num); // my greensock function
}
}, 500);
}
}
Что происходит с SetTimeout в там, что «я» цикл хитов каждую строку (там 27) до завершения одного набораTimeout. Таким образом, он не работает так, как должен - следующий цикл не должен выполняться до завершения setTimeout. Любая идея, как это сделать, чтобы каждая строка застопорилась примерно на 500 мс? Благодарю.
Вы не можете остановить цикл for в ActionScript и обновить отображение во время цикла. –