想象一下有一种情况:我有100个带有实例名称的动画片段:MC1a,MC2a,MC3a .. MC100a 我希望所有这些都是隐形的,除了:
MC1a.visible = false; ... MC100a.visible = false;
因为这样代码变得非常沉重,我认为这不是正确的方法。所以我在想是否有任何可能的方式成为这样的东西:
MC*a.visible = false;
所有在乞讨和'a'中包含'MC'的动画片段和结尾消失了吗?也许有阵列的东西?
答案 0 :(得分:3)
如果所有这些动画片段的父级都被称为容器,则可以执行以下操作:
container["MC"+i+"a"].visible=false
这是由于ActionScript的脚本性质。
对于您的特定情况,您可以
for(i=0;i<100;i++){
container["MC"+i+"a"].visible=false;
}
如果你没有0到100之间的所有数字,你可以这样做:
for each(MovieClip mc in container){
name=mc.name;
if(name.substring(0,2)=="MC" && name.substring(-1)=="a"){
mc.visible=false;
}
}
(这是未经测试的伪代码)
答案 1 :(得分:0)
有几种方法可以实现这一目标。首先 - 制作一个Sprite容器,它将是它们的共同父级,然后改变它的可见性。这不是一种灵活的方式,例如,如果您的影片剪辑位于舞台的两个不同区域,并且需要以某种方式进行交互,则可能无法将它们全部放在显示列表中的单个父级下。第二种方法是在实例化时从这100个影片剪辑中创建一个数组(当然,如果可能的话),然后遍历数组并在循环中分配它们的可见性。
基本上,如果您有一些应该构成结构的对象,请考虑先以某种方式链接它们,然后一起改变它们的可见性或其他参数。如果您需要一次性移动它们或隐藏,容器方法会更好。如果你需要它们来执行类似但不完全相同的动作(比如你有怪物作为电影剪辑,你需要它们一起移动,但每个都有自己的方向和速度),你应该有一个数组。
要考虑的另一件事是,如果有一个名为“MCbig_a”的影片剪辑,即符合您的条件,但不完全属于您希望隐藏的MC组,您将拥有采取预防措施。
答案 2 :(得分:0)
假设al children被添加到名为myContainer的同一容器中
var container:MovieClip = myContainer;
var i:uint = container.numChildren;
while (i--)
{
var child:* = container.getChildAt(i);
child.visible = false;
}