在打开另一个之前使影片剪辑不可见的Actionscript

时间:2015-02-16 15:49:23

标签: actionscript-3 flash visible

我有一个基本的Flash文档,显示了几周内的足球设备。我每周都有按钮,例如'Gameweek 1','Gameweek 2'等。

按下该按钮时,在显示灯具的按钮下方会显示一个影片剪辑。灯具影片剪辑始终存在,但按钮将其更改为可见。

我的问题是......如果我有游戏周期1灯具显示然后我点击'Gameweek 2'按钮,则会显示两组灯具,因为游戏周1灯具仍然可见。

当我按下按钮显示新灯具时,我希望以前可见的影片剪辑现在不可见,以便只显示新的灯具。

这是我的动作:

stop();

btn_game1.addEventListener(MouseEvent.CLICK,openGame1);
function openGame1(evt:MouseEvent) {
if (game1.visible){
    game1.visible = false;

}else {
    game1.visible = true;
}

}

btn_game2.addEventListener(MouseEvent.CLICK,openGame2);
function openGame2(evt:MouseEvent) {

if (game2.visible){
    game2.visible = false;

}else {
    game2.visible = true;
}

}

2 个答案:

答案 0 :(得分:1)

我想提出一种重新考虑的方法,减少代码数量和事件处理程序数量。

您只需要一个按钮处理程序来处理所有按钮。您还需要跟踪您显示/隐藏的所有剪辑。它们可以存储在数组中。

你可以"连接"通过为剪辑添加相似名称(btn_game1game1)来获取剪辑的按钮。

以下代码假设您的按钮都名为btn_gameN,并且您的剪辑名为gameN(其中N是数字):

var clips:Array = [game1, game2, game3, game4];

btn_game1.addEventListener(MouseEvent.CLICK, onGameButtonClicked);
btn_game2.addEventListener(MouseEvent.CLICK, onGameButtonClicked);
btn_game3.addEventListener(MouseEvent.CLICK, onGameButtonClicked);
btn_game4.addEventListener(MouseEvent.CLICK, onGameButtonClicked);

function onGameButtonClicked(e:MouseEvent):void 
{
    // figure out which button was just clicked by looking at its name
    var clipNum:String = e.currentTarget.name.substr("btn_game".length);

    // loop through all of your clips ...       
    for each(var clip:MovieClip in clips)
    {
        if(clip.name.substr("game".length) == clipNum)
        {
            // if the name matches, toggle the visibility 
            clip.visible = !clip.visible;
        }
        else
        {
            // if the name doesn't match, set visibility to false
            clip.visible = false;
        }
    }
}       

答案 1 :(得分:0)

当您显示game1时,您必须隐藏game2。同样适用于game2

function openGame1(evt:MouseEvent) {
    if (game1.visible) {
        game1.visible = false;
    }else {
        game1.visible = true;
        game2.visible = false;
    }  
}