Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 电影唇延伸_Actionscript 3_Flash_Button_Movieclip - Fatal编程技术网

Actionscript 3 电影唇延伸

Actionscript 3 电影唇延伸,actionscript-3,flash,button,movieclip,Actionscript 3,Flash,Button,Movieclip,我一直在尝试开发一个扩展MovieClip的CustomButton类,但是我遇到了一些问题。我有一个错误: ArgumentError:错误1063:上的参数计数不匹配 自定义按钮::自定义按钮。预期为2,得到0。在 flash.display::Sprite/在flash.display::Sprite处构造子对象 在flash.display::MovieClip 我试图调试我的代码,但它说 无法在此位置显示源代码 我不确定问题出在哪里,但我想问题出在构造函数中: public funct

我一直在尝试开发一个扩展MovieClip的CustomButton类,但是我遇到了一些问题。我有一个错误:

ArgumentError:错误1063:上的参数计数不匹配 自定义按钮::自定义按钮。预期为2,得到0。在 flash.display::Sprite/在flash.display::Sprite处构造子对象 在flash.display::MovieClip

我试图调试我的代码,但它说

无法在此位置显示源代码

我不确定问题出在哪里,但我想问题出在构造函数中:

public function CustomButton( buttonlabel:String, animationAR:Array,     active:Boolean=true, animated:Boolean = false, type:String = "free", group:int = 0 )
如果有人帮助我,我将非常感激。多谢各位


EDIT2:我想我知道它为什么没有出现,所以不用担心。

似乎你必须实例化CustomButton,而不传递任何参数

像这样:

var cBtn = new CustomButton();
但是,构造函数有两个必须传递的参数-buttonLabel和animationAR。其余的都可以,因为它们被指定了一个默认值

所以你应该这样做:

var cBtn = new CustomButton('Test', someArray);
这就是您定义构造函数的方式。这意味着前两个参数buttonlabel abd animationAR是必需的参数。其余的是可选的

现在如果你试着像这样实例化这个

var cb:CustomButton=new CustomButton();
您没有向构造函数传递任何参数,构造函数将抛出该错误。 请注意,这是直接在UI中创建对象时发生的情况

解决此问题的一种方法是将构造函数重新定义为:

public function CustomButton(
        buttonlabel:String="CustomButton",
        animationAR:Array=[],
        active:Boolean=true,
        animated:Boolean = false,
        type:String = "free",
        group:int = 0
    );
这使得所有参数都是可选的,应该可以工作。当然,您最好不要使用参数的默认值,因为您知道这是可行的。例如,在我的示例中,animationAR的空数组默认值可能会破坏您的代码,在这种情况下,您需要将其添加到构造函数主体中:

if(animationAR.length==0) {
    animationAR.push(new Animation());
    //YOU WILL HAVE TO CHANGE THIS LINE TO CORRESPOND TO YOUR CODE
}
或者,您可以将对象实例化为

var cb:CustomButton=new CustomButton("My Crazy-ass CustomButton", animArray);

我想我知道问题是什么,现在我希望我能向你解释清楚英语不是我的第一语言。您是否有机会在Flash程序中制作了一个图形MovieClip并将其链接到CustomButton类?如果是这样,请小心舞台上的实例,因为当Flash创建舞台上的Sprites/Movieclips对象时,它会调用它们的构造函数而不带任何参数

要避免这种情况,请执行以下操作之一:

为CustomButtonClass EDIT中的所有参数设置默认值:这可以解决您的问题,但不是很好的做法

使用addChild将按钮的实例放在我推荐的舞台上


希望这有帮助

我需要看到的不仅仅是构造器。。。尝试粘贴初始化类的方式,以及调用构造函数的位置,我会看一看,看是否有什么突然出现。我投票结束这个问题,因为您没有显示准确判断问题所在所需的所有代码。这种现象的症状是,关于构造函数参数的问题有3个答案。那太可笑了。请发布引发此错误的代码。如果您不知道如何确定,即使调试器说无法显示源代码,这也表明您没有花超过10秒的时间进行调试。开始注释代码,直到应用程序编译文件。一旦它这样做了,你就找到了冒犯的台词。请发帖。一旦你编辑了这个问题,我也会删除我的反对票,把它变成一个真实的、具体的问题,而不是一个关于危险的小游戏。@MKII你看到丹尼的答案了吗?在这里,他的故事最有意义。您是否将库对象设置为具有CustomButton的基类?很抱歉,我对AS3和Flash非常陌生,我几周前就开始学习了,还有很多东西需要学习。要扩展此答案,请注意*可以发送更多参数,前两个是必需的,实际上我使用了两个参数:public var mcButton:CustomButton=new CustomButton'Hello',arAR,true@MKII:如果是这样的话,没有足够的信息来解决这个问题。您需要发布更多信息。实际上我使用了两个参数:public var mcButton:CustomButton=new CustomButton'Hello',arAR,true;这就是为什么你需要学会正确地调试并在这里发布真正令人不快的一行@MKII。您的构造函数显然不是问题的根源,除非您已将类编译到运行时共享库中并从中实例化它。我们可以通过看到IDE声明它不能显示有问题行的源代码来说明这一点。如果此错误源于您的类构造函数,并且类以及实例化它的行是纯文本,并且正在编译,那么编译器将能够显示错误源。-1用于猜测和提升非常糟糕的对象组合。拥有构造函数参数的全部目的是为了对象组合,而设置一堆默认值是荒谬的。如果您不需要抽象掉构造函数中的任何特殊内容,那么应该同时消除构造函数参数
呃,使用封装的成员和访问器来定制你的对象创建后。问题是,当我开始使用Flash时,我多次遇到这个问题,所以我相信我给了他解决问题的正确方法。如果你在投票前阅读我的答案,你会发现我没有推广任何东西,事实上,我的建议不是设置默认值,而是使用ADDCHILD,对于他遇到的问题,我确信他没有使用。如果你既不理解这个问题也不理解我的答案,我想知道你为什么要投反对票?我删除了反对票,因为我跳过了关于向stage添加对象和调用构造函数时没有参数的部分。这实际上是很有道理的。然而,我仍然完全不同意糟糕的对象组合,因为我有一堆构造函数参数和默认参数。你可能不喜欢我和我的态度。我只是在为我的答案辩护,我相信在座的每个人都这么做,但我的答案很有帮助,我相信它不值得-1。事实上,丹尼的回答很有帮助,但是,如果我使用addChild,它将不会绘制按钮。。。
var cb:CustomButton=new CustomButton("My Crazy-ass CustomButton", animArray);