Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex ActionScript 3构造函数范围问题_Apache Flex_Actionscript 3_Constructor - Fatal编程技术网

Apache flex ActionScript 3构造函数范围问题

Apache flex ActionScript 3构造函数范围问题,apache-flex,actionscript-3,constructor,Apache Flex,Actionscript 3,Constructor,出于好奇,我决定在Flex 4项目中尝试以下内容: public class MyGroup extends Group { public function MyGroup() { super(); var myLabel:Label = new Label(); myLabel.id = "myLabel"; myLabel.text = "My label!"; this.addEl

出于好奇,我决定在Flex 4项目中尝试以下内容:

public class MyGroup extends Group
{       
    public function MyGroup()
    {
        super();
        var myLabel:Label = new Label();
        myLabel.id = "myLabel";
        myLabel.text = "My label!";
        this.addElement(myLabel);
    } etc.
这个自定义组件实现了我所期望的功能;它看起来像一个带有text=“My label!”的标签控件

问题:是否有任何方法可以在项目的其他地方引用myLabel标签控件(例如更改文本)

目前,访问内部label控件的唯一方法是调用myGroup.getElementAt(0)之类的东西


我意识到将标签设为类变量更有意义——我只是想知道这段代码是如何工作的。

您可以使用公共setter来更改文本标签:

public class MyGroup extends Group
{
    private var _label:Label=new Label();

    public function set label(value:String):void{
      _label.text=value;
    }

    public function MyGroup()
    {
        super();
        _label.id = "myLabel";
        label = "My label!";
        addElement(_label);
    }
.....
}

var myGroup:MyGroup=..
myGroup.label="Hello";

在您的情况下,由于您在
函数
中声明了
var
myLabel
,因此它的作用域仅适用于ActionScript中的
函数
,变量是命名句柄,您可以使用它来获取对象和数据。变量有一个称为范围的变量,它指定句柄在代码的哪些部分是有效的

在函数中创建变量时,其作用域就是该函数。也就是说,特定的命名句柄只能在该函数中使用

在代码中,您创建了一个名为
myLabel
的句柄,并在其中放置了一个
标签
——我们称之为
Label123
。接下来,您将
Label123
放入
MyGroup
的元素列表中,这将为
MyGroup
提供一个附加到
Label123
的句柄。然后函数结束,名为
myLabel
的句柄不再可用
Label123
仍然存在,因为
MyGroup
有一个句柄

如果将
myLabel
创建为
private
protected
类变量,则可以从
MyGroup
中的任何函数使用该句柄。如果将其创建为
public
类变量,则它将在
MyGroup
中的任何位置可用,也可以在代码中有
MyGroup
实例的任何位置使用。(如果将其创建为
内部
类变量,它将在
MyGroup
所在的包中的任何位置可用。)