public / private在actionscript函数中有什么限制?

时间:2008-11-17 10:11:14

标签: flex actionscript-3

我目前正在维护一些flex代码并注意到很多函数被声明为:

private function exampleFunc():void {
    ....
}

这些函数位于全局范围中,并且不属于任何特定类,因此我有点不清楚将它们声明为私有的效果。 “私人”限定符对此类功能有什么限制?

3 个答案:

答案 0 :(得分:2)

mxmlc代码中包含的actionscript函数将作为mxmlc组件的一部分提供,后者将在后台编译为类。因此将它们标记为私有使它们无法访问。

这是一个明确的例子,假设你有以下组件,我们称之为FooBox:


<!-- FooBox.mxml -->
<mx:Box xmlns:mx="http://www.macromedia.com/2003/mxml">
    <mx:Script><![CDATA[
        private function foo():void {
            lbl.text = "foo";
        }
        public function bar():void {
            lbl.text = "bar";
        }
    ]]></mx:Sctipt>
    <mx:Label id="lbl">
</mx:Box>


我现在可以将FooBox添加到我的应用程序中,并使用它的功能:


<mx:Application
 xmlns:mx="http://www.macromedia.com/2003/mxml"
 xmlns:cc="controls.*"
>
     <mx:Script><![CDATA[
       private function init():void {
            fbox.foo(); // opps, this function is unaccessible.
            fbox.bar(); // this is ok...
       }
    ]]></mx:Sctipt>
    <cc:FooBox id="fbox" />
</mx:Application>

如果您的主应用程序文件中包含actionscript函数,那么您可以通过Application.application对象从子控件中调用函数,如下所示:


Application.application.bar(); 

如果bar函数放在主mxmlc代码中。

答案 1 :(得分:0)

全球范围是什么意思?这些函数是在主MXML文件中声明的吗?

通常,private表示只能在声明它们的类中调用函数。

答案 2 :(得分:0)

但是,当你把它放在一个actionscript文件中时。它是否仍然被编译成一个类?

因为asdoc不喜欢它。