2012-05-17 39 views
0

我對AS3相當陌生。無論如何,我嘗試刪除動態創建的兒童動畫片段點擊時。當一個污垢塊被點擊時,這是一個'世界'的小孩動畫片段,我想刪除它。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)); 
    } 
} 

感謝您的幫助。

回答

1

試試這個

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

函數定義不應該是一個在門內。我改變了你的代碼並重新修改了一下:

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)); 
}