【问题标题】:Flash AS3 toggle visibleFlash AS3 切换可见
【发布时间】:2010-11-06 17:24:48
【问题描述】:

我有一个脚本,一旦单击(按钮),其他东西就会隐藏,然后再次单击它会重新显示。问题一旦被隐藏它就再也不会显示这里是脚本:

menu_start.addEventListener(MouseEvent.CLICK, myClickFunction);


function myClickFunction(event:MouseEvent) {

      // Hide the first and show the next here
      if (menu_menu.visible == true){
      menu_menu.visible = false;

      } 
      if (menu_menu.visible == false) {
          menu_menu.visible == true;
      }

}

非常感谢。

【问题讨论】:

  • 当按钮被点击时,menu_menu DisplayObject 是否还有其他事情发生?

标签: flash actionscript-3


【解决方案1】:

我更喜欢用简短的形式写出这样的逻辑:

menu_menu.visible = !menu_menu.visible;

【讨论】:

    【解决方案2】:

    原因是当你点击 按钮,它确实隐藏但再次 你点击它的同一个按钮 不显示

    如果我在上述陈述中错了,请纠正我。

    现在试试我所说的,有两个按钮隐藏和显示。创建两个新功能并尝试一下,如果这有效,那么您的逻辑中缺少一些东西,如果这不起作用,请告诉我们。

    也试试这个。

    function myClickFunction(event:MouseEvent) {
    
          // Hide the first and show the next here
          if (menu_menu.visible){
          menu_menu.visible = false;
    
          } else {
             menu_menu.visible = true;
          }
    
    }
    

    另一个问题可能是,当您单击按钮时,它可能没有再次获取 menu_menu 属性,因为它被隐藏或破坏了。它是在同一个组件内还是从其他地方调用?

    【讨论】:

    • "menu_menu.visible == true;"应该是“menu_menu.visible = true;”因为值“true”需要分配未测试。
    【解决方案3】:

    在您的第二个“if”语句中,您没有将 .visible 分配给 true,而是因为两个等号而检查它是否等于 true。

    function myClickFunction(event:MouseEvent) {
    
      // Hide the first and show the next here
      if (menu_menu.visible == true){
      menu_menu.visible = false;
    
      } 
      if (menu_menu.visible == false) {
          menu_menu.visible = true;
      }
    

    }

    【讨论】:

    • 你在最后一个 if 语句之前缺少一个 else,这就是它不再隐藏的原因。
    【解决方案4】:

    根据我提出的 Glens 建议,这是一个更好的版本,请随意使用。

    Buttonname.addEventListener (MouseEvent.CLICK, FunctionName);
    function FunctionName(event:MouseEvent) {
    
      if (name1.alpha == 1){
      name1.alpha = 0;} else {name1.alpha = 1}
    }
    

    此脚本的意思是,如果单击 name1(电影剪辑符号)的 Alpha 值等于 1,那么它会将 Alpha 值更改为 0,否则会将 Alpha 值更改为 1。

    这也适用于“可见”功能:

    Buttonname.addEventListener (MouseEvent.CLICK, FunctionName);
    function FunctionName(event:MouseEvent) {
    
      if (name1.visible == true){
      name1.visible = false;} else {name1.visible = true}
    }
    

    【讨论】:

      【解决方案5】:

      尝试使用 alpha = 0.1 而不是 visible = false 和 alpha = 1 而不是 visible = true。

      问题在于,当您使用 visible = false 时,它​​还会禁用鼠标交互,因此您的第二次点击永远不会触发。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多