我在swf Library中加载swf文件并从Linkage创建MovieClip对象。 MovieClip时间轴中有两个帧,分隔,没有补间。框架或对象中没有代码。帧中的所有对象都是MovieClip,每个对象都包含一个带有图形对象的帧。第一帧有12个对象,第二帧有1个。
我试图从第一帧中删除其中一个对象:
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个物体?
答案 0 :(得分:1)
简而言之:不要使用框架。
在西瓜中:框架就像一个状态。您可以操纵状态,但每当您返回到框架时,都会重新创建原始状态。
这就是为什么在控制程序流程时框架是一个糟糕的选择:它们不会保持状态。
这就是为什么你不应该使用框架来组织对象的状态。如果你想改变它的状态,至少不会。
你的陈述中存在矛盾:
并且其中包含一个带图形的框架。第一帧有12个对象,第二帧有1个。
它有一个带有图形的框架,或者它分别在第1帧和第2帧上有12个和1个对象,这意味着有2个带图形的框架。
您已经有一个与您的对象关联的类名:clss
这不是很具描述性。它也应该以大写字母开头。鉴于您问题中的图片,Circles
或CircleGroup
听起来更合适。
现在,您所要做的就是向类中添加方法,将对象状态从12个圆圈更改为仅1个。
鉴于放置的简单性和明显的随机性,我不会创建库符号并在代码中完成所有操作。为此,您必须将圆的符号与类名相关联,以便创建它的实例。