Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   В class не могу вызвать метод. (http://www.flasher.ru/forum/showthread.php?t=124347)

Vektor 27.04.2009 18:18

В class не могу вызвать метод.
 
Вложений: 1
В classе не могу вызвать метод, который находится в этом-же classе,
но в другом методе.
метод(mMini) в методе(mClose).
Почему?
Код AS3:

package {
        //Класс используется для создания окон.
        import flash.display.*;
        import flash.events.*;
 
        public class Windows extends MovieClip {
                //Обьявления переменных.
 
                var cClTrOrFal:ClickTrueOrFalse = new ClickTrueOrFalse  ;
                private var _mcNew0:MovieClip = new MovieClip  ;
                private var _mcNew2:MovieClip = new MovieClip  ;
                private var _mcNew1:mcNew = new mcNew  ;
                private var _mcMini:mcMini = new mcMini  ;
                private var _mcClose:mcClose = new mcClose  ;
 
                private var _btrue:Boolean = true;
                private var _gx = 150;
                private var _gy = 50;
                private var _bMini:Boolean;
                private var _bClose:Boolean;
                //Конструктор.
                public function Windows():void {
                        mCordinat(_gx,_gy);
                        addChild(mcNew0);
                        mcNew0.addChild(_mcNew1);
                        mcNew2.x = 0;
                        mcNew2.y = _mcNew1.height;
                        mcNew0.addChild(mcNew2);
                        _mcNew1.addEventListener(MouseEvent.MOUSE_DOWN,mTrue);
                        _mcNew1.addEventListener(MouseEvent.MOUSE_UP,mFalse);
                        _mcNew1["_mcMini"].addEventListener(MouseEvent.MOUSE_UP,mMini);
                        _mcNew1["_mcClose"].addEventListener(MouseEvent.MOUSE_UP,mClose);
                        addEventListener(MouseEvent.MOUSE_MOVE,mCursorFollow);
 
                }
                protected function get mcNew0():MovieClip {
                        return _mcNew0;
                }
                protected function get mcNew2():MovieClip {
                        return _mcNew2;
                }
                private function mCordinat(fx:Number,fy:Number):void {
                        _mcNew0.x = fx;
                        _mcNew0.y = fy;
                }
                private function mTrue(event:Boolean):void {
                        if (! _mcNew1["_mcMini"].hitTestPoint(mouseX,mouseY)) {
                                mcNew0.startDrag();
                        }
                }
                private function mFalse(event:Boolean):void {
                        mcNew0.stopDrag();
                }
                private function mCursorFollow(event:MouseEvent):void {
                        event.updateAfterEvent();
                }
                //Не могу, вызвать метод mMini в методе mClose.
                private function mMini(event:MouseEvent):void {
                        _bMini = cClTrOrFal.fTrueOrFalse(_mcNew1["_mcMini"],_bMini);
                        if (_bMini) {
                                mcNew0.removeChild(mcNew2);
                        } else {
                                mcNew0.addChild(mcNew2);
                        }
                }
                private function mClose(event:MouseEvent):void {
                        _bClose = cClTrOrFal.fTrueOrFalse(_mcNew1["_mcClose"],_bClose);
                        if (_bClose) {
                                trace("xsdcsf");
                                //Здесь вызвать метод mMini.
                                mMini(null);
                        } else {
 
                        }
                }
        }
}

Если, нужно выкладываю исходник.

Исправил форматирование.

litebox 27.04.2009 18:26

код отформатирован просто жутко :)
при вызове методов используют () и передают туда параметры, ваш метод:
Код AS3:

private function mMini(event:MouseEvent):void {

значит и вызывать вы его должны:
Код AS3:

_mcNew1["_mcMini"].mMini(null);

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

Vektor 27.04.2009 18:36

Пробовал так.
mMini(null);
Нет, ошибки но нечего не происходит.
Пробовал так.
mMini();
1136: Incorrect number of arguments. Expected 1.

Всё, я понял где ошибка.

litebox:Спасибо, за помощь.

litebox 27.04.2009 18:39

1136: Incorrect number of arguments. Expected 1 - верный знак того, что функция вызывается и говорит, что ожидалось получить 1 аргумент. Значит вызывайте первый вариант mMini(null); и разбирайтесь в логике того, что происходит в самой функции

terbooter 27.04.2009 18:42

Единственный (!) способ которым можно обратиться к приватной функции это
Код:

this.nameOfPrivateFunction();
У вас трудно даже понять что вы хотели:
Код:

_mcNew1["_mcMini"].mMini;
Но если даже в классе mcNew существует публичное свойство _mcMini,
которое реализует интерфейс с методом mMini, то эта функция не имеет абсолютно ничего общего (кроме названия) с приватной функцией которая описана в цитируемом классе.

Рекомендую не использовать подчеркивания и обзывать переменные и методы так,
чтобы это было целое английское слово и словосочетание.

dimarik 28.04.2009 00:05

Код AS3:

private function mMini(event:MouseEvent = null):void {



Часовой пояс GMT +4, время: 08:33.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.