从MovieClip的时间线中删除子项

时间:2015-06-24 17:55:09

标签: actionscript-3 flash

我在swf Library中加载swf文件并从Linkage创建MovieClip对象。 MovieClip时间轴中有两个帧,分隔,没有补间。框架或对象中没有代码。帧中的所有对象都是MovieClip,每个对象都包含一个带有图形对象的帧。第一帧有12个对象,第二帧有1个。

swf file first frame

我试图从第一帧中删除其中一个对象:

var mc:MovieClip = new clss() as MovieClip;
trace("total frames: "+mc.totalFrames);
mc.gotoAndStop(1);
trace("first frame numChildren: "+mc.numChildren);
mc.removeChildAt(0);
trace("first frame numChildren: "+mc.numChildren);
mc.gotoAndStop(2);
trace("second frame numChildren: "+mc.numChildren);
mc.gotoAndStop(1);
trace("first frame numChildren: "+mc.numChildren);

我得到了:

total frames: 2
first frame numChildren: 12
first frame numChildren: 11
second frame numChildren: 1
first frame numChildren: 12

为什么还有12个物体?

1 个答案:

答案 0 :(得分:1)

简而言之:不要使用框架。

在西瓜中:框架就像一个状态。您可以操纵状态,但每当您返回到框架时,都会重新创建原始状态。

这就是为什么在控制程序流程时框架是一个糟糕的选择:它们不会保持状态。

这就是为什么你不应该使用框架来组织对象的状态。如果你想改变它的状态,至少不会。

你的陈述中存在矛盾:

  

并且其中包含一个带图形的框架。第一帧有12个对象,第二帧有1个。

它有一个带有图形的框架,或者它分别在第1帧和第2帧上有12个和1个对象,这意味着有2个带图形的框架。

您已经有一个与您的对象关联的类名:clss这不是很具描述性。它也应该以大写字母开头。鉴于您问题中的图片,CirclesCircleGroup听起来更合适。 现在,您所要做的就是向类中添加方法,将对象状态从12个圆圈更改为仅1个。

鉴于放置的简单性和明显的随机性,我不会创建库符号并在代码中完成所有操作。为此,您必须将圆的符号与类名相关联,以便创建它的实例。