AS3隐藏随机对象?

时间:2014-10-21 09:00:04

标签: actionscript-3 flash

我对AS3比较陌生,目前正试图找出解决这个问题的方法:

我在网格中有25个图标(电影剪辑,但只是静态图像)的启动屏幕,背后有按钮。在每个图标的翻转时,我喜欢随机选择要隐藏的25个图标 - 除了当前翻转的图标。然后在ROLL_OUT上,所有25个图标应该再次可见。

非常感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:1)

您需要做的是遍历您拥有的所有MoveiClip并随机选择一些设置为不可见。

要使MovieClip不可见,我们会将visible属性设置为false,这会隐藏它们。

由于您没有提供任何当前代码,我将尝试创建一些以满足您的需求。

function icon_rollOver(e:MouseEvent):void {
    for (var i:uint = 0; i < holderMC.numChildren; i++) {
        if (holderMC.getChildAt(i) != e.target) {
            holderMC.getChildAt(i).visible = Math.random() > 0.5;
        }
    }
}

function icon_rollOut(e:MouseEvent):void {
    for (var i:uint = 0; i < holderMC.numChildren; i++) {
        holderMC.getChildAt(i).visible = true;
    }
}

// Add icon_rollOver and icon_rollOut as events to each of your MovieClips

该代码应该可以解决问题。我目前没有能够测试代码的位置,因此可能会出现一两个错误;但这是基本原则。

holderMC是MovieClip,其中存储了每个图标。如果此holderMC中的其他MovieClip不是图标,则需要一些稍微复杂的代码,或者将这些非图标移动到另一个容器中。

当调用icon_rollOver函数时,它将循环遍历holderMC内的每个MovieClip,然后检查它是否与e.target相同,其中e是事件。 target属性是指调度事件的对象,因此在这种情况下应该是已翻转的MovieClip。如果当前子项不是已翻转的子项,则将其设置为条件的可见性,等于随机数(0到1之间)是否大于.5。 I.E. MovieClip有50%的可能性变得不可见。

当调用icon_rollOut函数时,我们再次遍历holderMC内的每个MovieClip,但无论如何都只是将可见性设置为true。这将使holderMC中的每个MovieClip可见。

我希望这足以帮助您完成项目。祝你好运!

答案 1 :(得分:0)

我建议使用每个影片剪辑中存在的.visible属性。 一个简单的例子是:

MyMovieClip.visible = false;

这会使movieclip在被调用时不可见。

您的问题的一个可能的解决方案是制作一个在ROLL_OVER和ROLL_OUT上解除/切换的动画片段数组。