Flash 在AS3中隐藏一个按钮?

Flash 在AS3中隐藏一个按钮?,flash,actionscript-3,actionscript,adobe-flash-cs3,Flash,Actionscript 3,Actionscript,Adobe Flash Cs3,我有一个叫myBtn的按钮 在第1帧中的操作中,我尝试了以下两种方法: myBtn.visibility = false; myBtn.enabled = false; 两者都给了我相同的错误: 1120:访问未定义的属性myBtn 出现此错误是因为AS3编译器无法解析名称“myBtn” 什么是“myBtn”?它是其中一个的符号、组件还是命名实例 一旦您澄清了这一点,以下代码将完成这项工作: myBtn.visible = false; 如果您对从时间轴访问按钮非常感兴趣,我建议您坚持使用

我有一个叫myBtn的按钮

在第1帧中的操作中,我尝试了以下两种方法:

myBtn.visibility = false;

myBtn.enabled = false;
两者都给了我相同的错误:

1120:访问未定义的属性myBtn


出现此错误是因为AS3编译器无法解析名称“myBtn”

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

一旦您澄清了这一点,以下代码将完成这项工作:

myBtn.visible = false;

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


如果您想坚持使用AS3,那么您应该创建一个document类,而不是将代码放在第1帧中,并从中声明您在stage上拥有的对象,从而简化对它们的访问。

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

import fl.controls.Button;

var myBtn:Button = new Button();
addChild(myBtn);
然后,您可以引用它并将其隐藏,如下所示:

myBtn.visible = false;
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() {
      //..
    }
  }
}

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

如果您当前确实有文档类,则放置在舞台上的任何实例都需要在文档类中声明

例如:如果您在舞台上放置一个类的对象按钮,并将其称为myBtn,那么您的文档类需要如下所示:

myBtn.visible = false;
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
错误。

确定。有几种方法可以做到这一点。第一个只是使用时间线

方法1-时间线

第一步。转到“窗口”选项卡,然后选择“组件”。将按钮实例拖到舞台上

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

第三步。在时间线上,在第1帧中输入此代码

myBtn.visible = false;
方法2-文档类

第一步。在舞台上放置一个实例,如时间线中所示

第二步。创建一个类,让我们称之为资源

第三步。加

import flash.display.SimpleButton; 
第四步。创建公共静态成员

public static var BTN_MY_BUTTON:SimpleButton;
第五步。在文档类中,将其添加到contstructor

addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
第六步。添加此功能

private function init(e:Event):void

 Resource.BTN_MY_BUTTON = myBtn;
}
第七步。现在,在任何类中,您都可以通过

Resource.BTN_MY_BUTTON.visible = false;
1120:访问未定义的属性myBtn

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

myBtn.visible=true; // visible button


我已经将它拖到“组件”中,并将其设置为在动作脚本中使用。我现在得到这个错误:1119:通过静态类型类的引用可以访问可能未定义的属性。因此,您的库中现在有一个名为“myBtn”的组件。你把你的组件拖回舞台了吗?你需要这样做。使用“属性”窗格设置实例名称。这就是AS代码所需要的魔力。好吧,这是有道理的。我有:1。将按钮添加到组件2中。把它拖到我的舞台上。给它一个实例名“myBtn”4。将上述代码插入到操作框架1中,我仍然收到错误1119将组件/库项命名为与实例名称不同的名称-它抱怨的是哪个名称?实际上没有理由使用AS2。如果您需要使用委托来正确引用类成员(或者使用诸如声明成员thisObj并为其分配“this”之类的黑客手段),那么这就更复杂了