【问题标题】:Hide a Button in AS3?在 AS3 中隐藏按钮?
【发布时间】:2011-01-04 17:39:33
【问题描述】:

我有一个名为 myBtn 的按钮。

在我在第 1 帧中的操作中,我都尝试了:

myBtn.visibility = false;

myBtn.enabled = false;

两者都给我同样的错误:

1120:未定义属性 myBtn 的访问。

【问题讨论】:

    标签: flash actionscript-3 actionscript adobe-flash-cs3


    【解决方案1】:

    您收到此错误是因为 AS3 编译器无法解析名称“myBtn”。

    什么是'myBtn'?它是符号、组件还是其中任何一个的命名实例?

    一旦你澄清了这一点,下面的代码就可以完成这项工作:

    myBtn.visible = false;
    

    【讨论】:

    • 我已将其拖入“组件”并将其设置为在动作脚本中使用。我现在收到此错误:1119: Access of possible undefined property visible through an reference with static type Class.
    • 所以你现在在你的库中有一个名为“myBtn”的组件。你把你的组件拖回舞台了吗?你需要这样做。使用“属性”窗格设置实例名称。这就是您的 AS 代码所需要的魔力。
    • 好的,有道理。我已经: 1. 将按钮添加到组件 2. 将其拖到我的 Stage 3. 给它一个实例名称“myBtn” 4. 将上述代码插入到动作帧 1 我仍然收到错误 1119
    • 将组件/库项命名为与实例名称不同的名称 - 它抱怨的是哪个名称?
    【解决方案2】:

    如果您对从时间线访问按钮非常感兴趣,我建议您坚持使用 AS2,因为它大大简化了此过程。许多涉及访问放置在编辑器中的实例、从时间线运行代码等的场景在 AS3 中变得不那么简单了。

    如果您想坚持使用 AS3,那么您应该创建一个文档类,而不是将您的代码放在第 1 帧中,然后您可以从那里声明您在舞台上拥有的对象,从而简化对它们的访问。

    【讨论】:

    • 真的没有理由使用AS2。如果有什么更复杂的,因为您需要使用委托来正确引用类成员(或诉诸诸如声明成员 thisObj 并将“this”分配给它等技巧)
    【解决方案3】:

    如果您在库中有一个按钮,您可以使用以下命令向舞台添加一个新实例:

    import fl.controls.Button;
    
    var myBtn:Button = new Button();
    addChild(myBtn);
    

    然后您可以像这样引用它并隐藏它:

    myBtn.visible = false;
    

    最好按照@Ipsquiggle 的建议在单独的课程中执行此操作。

    【讨论】:

      【解决方案4】:

      如果您当前有一个文档类,那么放置在舞台上的任何实例都需要在文档类中声明。

      例如:如果你将一个Button类的对象放在舞台上,并命名为myBtn,那么你的文档类需要如下所示:

      package {
        import flash.display.MovieClip;
        import flash.display.Button;
      
        public class DocClass extends MovieClip {
          public var myBtn:Button;  // !!! This is the line that lets you access the instance
      
          public function DocClass() {
            //..
          }
        }
      }
      

      否则,拥有 doc 类但不声明实例的组合会给您带来 1120 错误。

      【讨论】:

        【解决方案5】:

        好的。有几种方法可以做到这一点。第一个只是涉及使用时间线。

        方法 1 - 时间线

        步骤 1. 转到窗口选项卡,然后选择组件。将 Button 实例拖到舞台上。

        第 2 步。在显示“实例名称”的属性面板中,将其替换为“myBtn”(确保不使用引号 :P)

        第 3 步。在时间轴上的第 1 帧中输入此代码。

        myBtn.visible = false;
        

        方法2 - 文档类

        步骤 1. 将实例放置在时间轴中的舞台上

        第 2 步。创建一个类,我们称之为 Resource。

        第三步,添加

        import flash.display.SimpleButton; 
        

        第 4 步。创建一个公共静态成员

        public static var BTN_MY_BUTTON:SimpleButton;
        

        第 5 步。在您的文档类中,将其添加到构造函数中。

        addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
        

        第 6 步。添加此功能

        private function init(e:Event):void
        
         Resource.BTN_MY_BUTTON = myBtn;
        }
        

        第 7 步。现在在任何课程中,您都可以通过以下方式访问按钮

        Resource.BTN_MY_BUTTON.visible = false;
        

        【讨论】:

          【解决方案6】:

          1120:未定义属性 myBtn 的访问。

          这确实意味着您的按钮没有名称。您必须在按钮的属性面板中为您的按钮命名,在字段(实例名称)中,您将输入名称 myBtn 并在行动中写道:

          myBtn.visible=true; // visible button
          

          myBtn.visible=false; // or to make your button invisible;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-04-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-12-20
            相关资源
            最近更新 更多