【问题标题】:Constructor arguments problem ActionScript 3构造函数参数问题 ActionScript 3
【发布时间】:2010-10-21 09:32:06
【问题描述】:

我在 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);

任何想法,有什么问题?

【问题讨论】:

  • 将 MenuItem 向下转换为 MovieClip 是没有意义的,请尝试: var menu1:MenuItem = new MenuItem(3);

标签: actionscript-3 constructor arguments


【解决方案1】:

抱歉,我还不能发表评论,或者我会把它放在评论中。

你确定:

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

【讨论】:

  • 哎呀,是的,你是对的,舞台上有一个那个符号的实例,但直到读到这个我才意识到;)thanxalot
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2011-11-28
    • 2011-02-27
    • 2011-04-03
    • 1970-01-01
    • 2013-06-05
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多