AS3删除动态创建的子动画片段

时间:2012-05-17 23:18:16

标签: actionscript-3 actionscript movieclip removechild

我对AS3很新。无论如何,我试图在单击时删除动态创建的子动画片段。当点击一个污垢块,这是一个'世界'的儿童动画片段,我想删除它。

我尝试过使用removeChild删除它的各种方法。我也尝试在for循环的内部/外部移动函数来创建动画片段。

var blockCount:Number = 0;
var blockArray:Array = [];

var world:MovieClip = new World();
world.x = 50;
world.y = 50;
world.name = "world";
addChild(world);

for(var i:Number=1;i<=100;i++){
    blockCount++;
    var tempGrassBlock:MovieClip = new GrassBlock();
    tempGrassBlock.x = i*16;
    tempGrassBlock.y = 256;
    tempGrassBlock.name = "b"+blockCount;
    world.addChild(tempGrassBlock);

    tempGrassBlock.addEventListener(MouseEvent.CLICK, removeBlock);
    function removeBlock(event:Event){
        world.removeChild(getChildByName(event.target.name));
    }
}

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

试试这个

function removeBlock(event:Event){
    world.removeChild(event.currentTarget as DisplayObject);
}

答案 1 :(得分:1)

for语句中不应包含任何函数定义。我在你的代码中更改了它并在下面重写了一点:

var blockCount:Number = 0;
var blockArray:Array = [];

var world:MovieClip = new World();
world.x = 50;
world.y = 50;
world.name = "world";
addChild(world);

for(var i:Number=1;i<=100;i++){
    blockCount++;
    var tempGrassBlock:MovieClip = new GrassBlock();
    tempGrassBlock.x = i*16;
    tempGrassBlock.y = 256;
    tempGrassBlock.name = "b"+blockCount;
    world.addChild(tempGrassBlock);

    tempGrassBlock.addEventListener(MouseEvent.CLICK, removeBlock);

}

function removeBlock(event:MouseEvent){
    trace("Is click really working? This target name is " + event.currentTarget.name);
    world.removeChild(event.currentTarget));
}