假设我有一个名为a_Mc(ClassA)的动画片段。
我有一个名为b_Mc(ClassB)
的子动画片段案例1:访问a_Mc动画片段中已存在的子动画片段b_Mc
(因为Flash IDE具有“自动实例命名”关闭)
ClassA提到b_Mc的名称为=> var b_Mc:MovieClip;
注意:变量名必须与舞台上实例的名称相同。
所以我可以访问它:trace( a_Mc.b_Mc);
案例2:动态添加后,访问子动画片段b_Mc
var b_Mc:ClassB = new ClassB();
b_Mc.name = "someName" ;
a_Mc.addChild(b_Mc) ;
所以我可以访问它:trace( a_Mc.getChildByName("someName"));
我想明白,为什么有这样的实现差异,相反事情必须相似。 Flash播放器如何管理“现有实例名称”,“动态添加实例名称”和“在相关类中使用的变量名称来表示这些实例名称”?
由于 Vishwas。
答案 0 :(得分:0)
你实际上在做两件事。
如果案例1 b_Mc
是A类中包含的变量
如果2 b_Mc
是a_Mc
MovieClip显示列表的子项。
因此,在案例2中,您只需执行b_Mc
即可访问trace(b_Mc);
。由于变量是在课堂外创建的,因此您不必经历a_Mc
。
作为显示列表子项(案例2)和作为对象的成员变量(案例1)之间存在差异。
如果你想动态创建子动画片段,你可以这样做:
var newB:ClassB = new ClassB();
a_Mc.b_Mc = newB;
您可以将新剪辑分配给A类中的b_Mc
变量。
然后你可以像在案例1中那样访问它:
trace(a_Mc.b_Mc);
您还可以在A类中创建b_Mc
并直接将其分配给b_Mc
变量:
// inside Class A
b_Mc = new ClassB();
// outside Class A
trace(a_Mc.b_Mc);
请注意,所有这些都与b_Mc
是否是A的显示列表的子项无关,或者是否显示在显示列表上。