AS3使嵌套的mc按钮/ textinputs在运行时可见/不可见

时间:2016-08-30 20:50:55

标签: actionscript-3 flash

我正在寻找一种有效的隐藏和取消隐藏主要mc内的影片剪辑按钮/文本输入的方法。我的应用程序有一个“帮助弹出窗口”,启用后应该关闭当前帧的任何按钮/文本输入,当关闭帮助弹出窗口时,应重新启用按钮/文本输入。 我创建了以下函数来禁用/启用我的mainScreen mc中的所有按钮,除了我的文本输入在重新启用它们之后不再可以显示(它本身100%运行.swf文件但不在浏览器中) : 并非所有按钮都应该可见,具体取决于所使用的关键帧。我只是手动在每个帧上放置我需要的按钮/文本输入,但是如果我创建一个隐藏它们的全局函数并且取消隐藏它们不应该在第一帧和它们上面吗?

function disableButtons():void
{
mainScreen.mouseChildren = false;
mainScreen.tabChildren = false;
}
function enableButton():void
{
mainScreen.mouseChildren = true;
mainScreen.tabChildren = true;
}

我已经探索过将所有按钮放在一个数组中,然后用循环使它们不可见和可见的想法,但是我如何根据它们所在的框架指定哪些应该是可见的:

var bArray:Array = [mainScreen.b1,mainScreen.txt2];
//When help popup is on hide all buttons
function hideButtons():void
{
for (var i:int = 0; i<bArray.length; i++)
{
    bArray[i].visible = false; 
}
}
//When help popup is closed only make visible the needed buttons
function showButtons():void
{
for (var i:int = 0; i<bArray.length; i++)
{
    bArray[i].visible = true; //Somehow I need to specify which ones I want visible depending on the frame.  

}
}

我还有很多需要学习的东西,我很欣赏任何指针! 感谢。

1 个答案:

答案 0 :(得分:0)

如果你想通过它们的框架位置使对象可见,你可以循环尽可能多的.numChildren,并在它们已经在显示列表中的情况下进行循环

例如,

function makeInvisible ()
{
    for (var i:int = 0; i < mainScreen.numChildren; i++)
        mainScreen.getChildAt (i).visible = false
        ;
}

您希望在要使对象不可见的框架中调用此函数

当然,有一个问题。此函数将使相应框架中mainScreen的每个对象都不可见。要解决此问题,您可以过滤要使其不可见的对象类型。

function makeInvisible ()
{
    for (var i:int = 0; i < mainScreen.numChildren; i++)
    {
        var child = mainScreen.getChildAt (i);
        if (child is /*...insert type here...*/)
            child.visible = false;
    }
}