在完成操作后尝试从舞台上删除MovieClip后,我感到有点沮丧。在加载我的框架时,我在一个创建饼图的函数中有一些代码。
var piechart:MovieClip = new MovieClip(); stage.addChild(饼图); //然后再画一些饼图
所以这段代码不在我的“动作”层上。现在我在这个框架上有一个按钮导航到时间轴中的不同框架,但是当我更改框架时,饼图会保留。那么,在完成它之后,如何从舞台上删除这个饼图?我试过stage.removeChild(...)和其他人但是我认为是错的?任何帮助,将不胜感激。
由于
答案 0 :(得分:2)
在时间线上编写代码会导致各种难以诊断的场景 - 您是否考虑过将所有代码放入某些类中,并将它们粘贴在通过链接中?这确实是一种最佳做法,你可以避免这样的问题。
也就是说,有各种方法可以从舞台上删除东西。如果你想要从舞台上删除所有东西,因为你正在转换或者什么东西,那么这样的东西就可以了:
while (this.numChildren > 0) {
this.removeChildAt(0);
}
或者,如果对于对象的特定父级有什么困惑,可以使用这样的代码:
if (pieChart.parent) { // checks to see if it actually has a parent
pieChart.parent.removeChild(pieChart);
}
这样,即使您不小心忘记了对父对象的引用(如果您正在执行时间轴代码,也很容易发生),您仍然可以通过调用对象本身的父属性来检索引用。这有意义吗?
答案 1 :(得分:2)
Myk是对的,最好不要在时间轴中编码。在任何情况下,一个快速的解决方案就是在离开当前帧之前清除舞台。
例如:
function nextFrame(event:MouseEvent ):void
{
//if you're still in the same frame , this should work...
stage.removeChild( pieChart );
//then move on...
gotoAndStop('whereverYouWannaGo');
}
答案 2 :(得分:0)
使用gotoAndStop(“desiredFrame”)
如果您尝试gotoAndPlay,之前的帧将继续播放