Проблема аргументов конструктора ActionScript 3 - PullRequest
2 голосов
/ 23 апреля 2009

У меня есть собственный класс, определенный в Actionscript, и я хочу сделать его экземпляр в основном документе приложения Flash. Однако после вызова конструктора с одним аргументом Flash выдает мне эту ошибку:

Error #1063: Argument count mismatch on coa.application::MenuItem(). Expected 1, got 0.

Это мой класс:

public class MenuItem extends MovieClip{
    var button:SimpleButton;

    public function MenuItem(buttonLoc:uint) {

        button = new InvBtn();
        this.addChild(button);
        button.x=-81;
        button.y=buttonLoc*33;
        button.addEventListener(MouseEvent.CLICK, mybringToFront);
    }
}

И это моя попытка вызвать его конструктор:

var menu1:MovieClip = new MenuItem(3);

Есть идеи, что не так?

Ответы [ 2 ]

3 голосов
/ 23 апреля 2009

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

Вы уверены, что:

var menu1: MovieClip = new MenuItem (3);

это единственное место, где вы создаете новый MenuItem? Вы случайно не подключили класс MenuItem к некоторым экземплярам на сцене?

Я изменил ваш код на это (просто чтобы я мог его запустить), и он отлично работает:

package{
    import flash.display.MovieClip;
    import flash.display.SimpleButton;
    import flash.events.MouseEvent;
    public class MenuItem extends MovieClip{

            var button:SimpleButton;

            public function MenuItem(buttonLoc:uint) {

                    button = new SimpleButton();
                    this.addChild(button);
                    button.x=-81;
                    button.y=buttonLoc*33;
                    button.addEventListener(MouseEvent.CLICK, mybringToFront);
            }

            public function mybringToFront(event:MouseEvent):void{
                trace('blah');
            }
    }
}
1 голос
/ 23 апреля 2009

Как сказал quoo, скорее всего, у вас есть экземпляр объекта, к которому класс присоединен на сцене. Для этого сделайте следующее:


public class MenuItem extends MovieClip{
        var button:SimpleButton;

        // I changed it to int, cuz uint is extremely slow for any math
        // other than bitwise operators, int is fast as long as no fractions
        public function MenuItem(buttonLoc:int = -1) {
                if (buttonLoc == -1)
                    trace("On stage instance found! Location: "+x+", "+y);

                button = new InvBtn();
                this.addChild(button);
                button.x=-81;
                button.y=buttonLoc*33;
                button.addEventListener(MouseEvent.CLICK, mybringToFront);
        }
}

...