2

Actionscript で定義されたカスタム クラスがあり、Flash アプリケーションのメイン ドキュメントでそのインスタンスを作成したいと考えています。ただし、引数を 1 つ指定してコンストラクターを呼び出した後、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);

何か考えはありますか?

4

2 に答える 2

3

申し訳ありませんが、まだコメントすることはできません。または、これをコメントに入れます.

よろしいですか:

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');
            }
    }
}
于 2009-04-23T15:21:11.150 に答える
1

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);
        }
}

于 2009-04-23T17:00:34.267 に答える