2016-01-07 97 views
0

我有一个数据网格,添加行。无论何时添加一行,都会在舞台上添加一个影片剪辑。如果点击了行和按钮,我添加了一个按钮来删除数据网格中的一行,并且所有这些工作都非常好。如何通过选择一行并按下删除按钮来删除MovieClip?

但是,当我尝试删除与该数据网格中该行相关的影片剪辑时,它不起作用。

我的代码是:

function removeloaditem(event:MouseEvent) { 
datagrid.removeItemAt(datagrid.selectedIndex); 
removeChild(MovieClip(datagrid.selectedIndex); 
} 

回答

0
removeChild(MovieClip(datagrid.selectedIndex); 

您需要了解这行代码是试图做。

datagrid.selectedIndex 

这个变量只是一个数字。所以,你正试图将一个数字投射到一个MovieClip上。

MovieClip(1) 

这是行不通的。您需要参考实际的 MovieClip对象。无论您在何处创建MovieClip对象,都需要存储对该对象的引用。你可以有一个普通的Object存储所有的引用。

var objectList:Object = {}; 

,然后,无论你正在创建的影片剪辑,加入这一行:

objectList["reference_" + datagrid.selectedIndex] = "movieclip variable"; 

替换 “影片剪辑变量” 与参考你的MovieClip对象。之后,用以下两行替换当前的removeChild行:

var movieclip = objectList["reference_" + datagrid.selectedIndex] 
moveclip.parent.removeChild(movieclip); 
+0

哦,我明白你的意思是变量只是一个数字。但我不明白关于用参考替换“movieclip变量”的部分。这是否意味着“reference_”和“movieclip变量”是相同的术语?并且是否提到了该movieclip的排序名称? – Sherlyn

+0

您正在创建一个新的动画片段以添加到舞台上,对吗?你一定是。像“var movieclip = new MovieClip();” “movieclip reference”只是占位符文本,用于您的movieclip实例变量名称的位置。因此,如果你正在做“var someMovieClip = new MovieClip()”,那么你会用“someMovieClip”取代“movieclip reference”...得到它? – inverse

+0

是的,我明白了!当我在1个动画片段上尝试它时,它工作正常。但是,如果我要有多个相同图像的影片剪辑?当我尝试它时,它将删除所有的影片剪辑,这是合理的,因为它们都具有相同的名称。我试图通过在movieclip实例名称的后面添加越来越多的数字来使名称与众不同,但它似乎不起作用。 – Sherlyn