0

想象有这样一种情况:我有 100 个具有实例名称的影片剪辑:MC1a、MC2a、MC3a .. MC100a,我希望它们全部不可见,除了:

MC1a.visible = false; ... MC100a.visible = false;

因为这样代码变得非常繁重,我认为这不是正确的方法。所以我在想有没有可能的方法是这样的:

MC*a.visible = false;

所有在乞求和“a”中包含“MC”和结尾的电影剪辑都消失了吗?也许有数组的东西?

4

3 回答 3

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;
    }
}

(这是未经测试的即时编写的伪代码)

于 2012-09-13T13:12:28.953 回答
0

有几种方法可以实现这一目标。首先 - 制作一个 Sprite 容器,这将是它们的共同父级,然后改变它的可见性。这不是一种灵活的方式,例如,如果您的电影剪辑位于舞台的两个不同区域,并且需要以某种方式进行交互,您可能无法将它们全部放在显示列表中的单个父项下。第二种方法是在实例化时从这 100 个影片剪辑中创建一个数组(当然,如果可能的话),然后遍历数组并在循环中分配它们的可见性。

基本上,如果您有一些应该形成结构的对象,请考虑首先以某种方式链接它们,然后将它们的可见性或其他参数一起更改。如果您需要一次将它们全部移动或隐藏,容器方法会更好。如果您需要它们执行相似但不完全相同的动作(例如,您将怪物作为电影剪辑,并且您需要它们一起移动,但每个都有自己的方向和速度),您应该有一个数组。

另一件需要考虑的事情,如果有一个名为“MCbig_a”的影片剪辑,即符合您的条件,但不完全属于您希望使其不可见的 MC 组,您将不得不采取预防措施关于此类事件。

于 2012-09-13T13:20:00.003 回答
0

假设所有孩子都被添加到名为 myContainer 的同一个容器中

var container:MovieClip = myContainer;
var i:uint = container.numChildren;
while (i--)
{
    var child:* = container.getChildAt(i);
    child.visible = false;
}
于 2012-09-13T15:24:25.677 回答