Цитата:
|
а вот конечное значение цикла не меняется
|
numChildren меняется после removeChildAt.

Код AS3:
package
{
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
public class TestProject extends Sprite
{
public function TestProject()
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(event:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
for (var i:int = 0; i < 5; i++)
if (Math.random() > 0.5)
addChild(createSprite(i));
else
addChild(createMovieClip(i));
for (var j:int = 0; j < numChildren; j++)
{
trace(getChildAt(j));
var co:DisplayObject = getChildAt(j);
if (co is MovieClip)
removeChildAt(j--);
// В итоге останутся только белые кружки спрайтов.
}
}
private function createSprite(i:int):Sprite
{
var s:Sprite = new Sprite();
s.graphics.lineStyle(1);
s.graphics.beginFill(0xFFFFFF);
s.graphics.drawCircle(i * 20 + 10, i * 20 + 10, 20);
return s;
}
private function createMovieClip(i:int):Sprite
{
var m:MovieClip = new MovieClip();
m.graphics.lineStyle(1);
m.graphics.beginFill(0x5555FF);
m.graphics.drawCircle(i * 20 + 10, i * 20 + 10, 20);
return m;
}
}
}