Какие ограничения есть у public / private в функциях actionscript? - PullRequest
1 голос
/ 17 ноября 2008

В настоящее время я поддерживаю некоторый гибкий код и заметил очень много функций, которые объявлены как:

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

Эти функции находятся в глобальной области действия и не являются частью какого-либо конкретного класса, поэтому мне немного неясно, какой эффект будет иметь объявление их как private. Какие ограничения имеет закрытый квалификатор для таких функций?

Ответы [ 3 ]

2 голосов
/ 17 ноября 2008

Функции 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>


Теперь я могу добавить 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 включены в файл основного приложения, I думаю, , что вы можете вызывать функции из дочернего элемента управления через объект Application.application, например:


Application.application.bar(); 

если функция bar была помещена в основной код mxmlc.

0 голосов
/ 13 января 2009

Но когда вы помещаете его в файл ActionScript. Как он все еще компилируется в класс?

Потому что asdoc это не нравится.

0 голосов
/ 17 ноября 2008

Что вы подразумеваете под глобальным охватом? Эти функции объявлены в основном файле MXML?

В общем, private означает, что функции могут вызываться только из класса, который их объявляет.

...