我有一个在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);
任何想法,哪有错?
答案 0 :(得分: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');
}
}
}
答案 1 :(得分: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);
}
}