Apache flex 在actionscript函数中公共/私有有哪些限制?
我目前正在维护一些flex代码,并注意到很多函数声明如下:Apache flex 在actionscript函数中公共/私有有哪些限制?,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我目前正在维护一些flex代码,并注意到很多函数声明如下: private function exampleFunc():void { .... } 这些函数在全局范围内,并且不是任何特定类的一部分,因此我有点不清楚将它们声明为private会产生什么影响。“private”限定符对这样的函数有什么限制?全局范围是什么意思?这些函数是否在主MXML文件中声明 一般来说,private意味着只能从声明函数的类中调用函数。mxmlc代码中包含的actionscript函数将作为mxmlc组
private function exampleFunc():void {
....
}
这些函数在全局范围内,并且不是任何特定类的一部分,因此我有点不清楚将它们声明为private会产生什么影响。“private”限定符对这样的函数有什么限制?全局范围是什么意思?这些函数是否在主MXML文件中声明
一般来说,private意味着只能从声明函数的类中调用函数。mxmlc代码中包含的actionscript函数将作为mxmlc组件的一部分提供,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>
如果bar函数位于主mxmlc代码中 但是,当你把它放到一个actionscript文件中时,它仍然被编译到一个类中吗 因为asdoc不喜欢它
<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>
Application.application.bar();