想象有这样一种情况:我有 100 个具有实例名称的影片剪辑:MC1a、MC2a、MC3a .. MC100a,我希望它们全部不可见,除了:
MC1a.visible = false; ... MC100a.visible = false;
因为这样代码变得非常繁重,我认为这不是正确的方法。所以我在想有没有可能的方法是这样的:
MC*a.visible = false;
所有在乞求和“a”中包含“MC”和结尾的电影剪辑都消失了吗?也许有数组的东西?
想象有这样一种情况:我有 100 个具有实例名称的影片剪辑:MC1a、MC2a、MC3a .. MC100a,我希望它们全部不可见,除了:
MC1a.visible = false; ... MC100a.visible = false;
因为这样代码变得非常繁重,我认为这不是正确的方法。所以我在想有没有可能的方法是这样的:
MC*a.visible = false;
所有在乞求和“a”中包含“MC”和结尾的电影剪辑都消失了吗?也许有数组的东西?
如果所有这些影片剪辑的父级称为容器,您可以这样做:
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;
}
}
(这是未经测试的即时编写的伪代码)
有几种方法可以实现这一目标。首先 - 制作一个 Sprite 容器,这将是它们的共同父级,然后改变它的可见性。这不是一种灵活的方式,例如,如果您的电影剪辑位于舞台的两个不同区域,并且需要以某种方式进行交互,您可能无法将它们全部放在显示列表中的单个父项下。第二种方法是在实例化时从这 100 个影片剪辑中创建一个数组(当然,如果可能的话),然后遍历数组并在循环中分配它们的可见性。
基本上,如果您有一些应该形成结构的对象,请考虑首先以某种方式链接它们,然后将它们的可见性或其他参数一起更改。如果您需要一次将它们全部移动或隐藏,容器方法会更好。如果您需要它们执行相似但不完全相同的动作(例如,您将怪物作为电影剪辑,并且您需要它们一起移动,但每个都有自己的方向和速度),您应该有一个数组。
另一件需要考虑的事情,如果有一个名为“MCbig_a”的影片剪辑,即符合您的条件,但不完全属于您希望使其不可见的 MC 组,您将不得不采取预防措施关于此类事件。
假设所有孩子都被添加到名为 myContainer 的同一个容器中
var container:MovieClip = myContainer;
var i:uint = container.numChildren;
while (i--)
{
var child:* = container.getChildAt(i);
child.visible = false;
}