【发布时间】:2012-02-23 18:35:37
【问题描述】:
因此,我找到了一种创建像素化擦除效果的好方法,其中像素的影片剪辑嵌套在行中。我创建了一个遍历每一行的循环,然后在该循环内为每一行中的像素创建另一个循环。然后,我使用 1-0 之间的随机数作为延迟,然后再对像素进行 alpha-ups。我使用 Greensock 进行补间,效果很好。
有一个问题,我无法停止行的 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,那么在一个 setTimeout 完成之前,“i”for 循环会命中每一行(共有 27 行)。因此,它不能正常工作 - 下一个循环不应该在 setTimeout 完成之前执行。知道如何做到这一点,使每一行停滞约 500 毫秒吗?谢谢。
【问题讨论】:
-
您不能在 ActionScript 中停止 for 循环并在循环运行时更新显示。
标签: actionscript-3