你是如何制作一个影片剪辑,只是在变得可见之后可点击?

时间:2010-11-05 00:44:02

标签: flash actionscript-3

所以我有一个名为signInBtn的影片剪辑和一个名为signOutBtn的影片剪辑 最初,

signOutBtn.visible = false;

但是当用户登录时

signInBtn.visible = false;
signOutBtn.visible = true;

但是在我这样做之后,我无法点击signOut movieclip。我认为这可能是因为signOutBtn位于看不见的signInBtn之下,但事实并非如此。

2 个答案:

答案 0 :(得分:0)

修改

 signout works when it is in a different position to sign in but when it is in 
 the same position as signin it cant be clicked. when the sign out button is half 
 over the same position as the signin button, half the signout button works and 
 half doesnt

如果你有一个MovieClip或Sprite,那么鼠标事件将被屏蔽,但是有很多方法可以解决这个问题。在任何情况下,在您的示例中,只需在不需要时禁用按钮

     signInBtn.visible = false;
     signInBtn.mouseEnabled = false;

     signOutBtn.visible = true;

编辑结束

没有明显的理由说明为什么signOutBtn在其可见性被切换后不应该被点击。错误发生在其他地方。

确保在更改其可见性之前,这两个按钮都是可点击的。

您是否向两个按钮添加了事件侦听器,是否在事件触发后删除了事件侦听器?

答案 1 :(得分:0)

package
{ 
import fl.controls.Button;
import flash.display.Sprite;
import flash.events.MouseEvent;

public class Test extends Sprite
{
private static const SIGN_IN:String = "Sign In";
private static const SIGN_OUT:String = "Sign Out";

private var button:Button;

public function Test()
     {
     button = new Button();
     button.addEventListener(MouseEvent.CLICK, buttonClickEventListener);
     button.label = SIGN_IN;

     addChild(button);
     }

private function buttonClickEventListener(evt:MouseEvent):void
     {
     switch (button.label)
            {
            case SIGN_IN:   button.label = SIGN_OUT;
                            trace("Signed in");
                            break;

            case SIGN_OUT:  button.label = SIGN_IN;
                            trace("Signed out");
            }
      }
}
}