【问题标题】:AS3 ArgumentError: Error #1063: Expected 2, got 0AS3 ArgumentError:错误 #1063:预期为 2,得到 0
【发布时间】:2013-03-11 16:45:57
【问题描述】:

我不断收到此错误:ArgumentError: Error #1063: Argument count mismatch on code::SimonPad()。预期 2,得到 0。 我不知道发生了什么,尤其是 uint。任何帮助将不胜感激。 我在下面显示了两个代码块。它们基于 Actionscript 3.0 当我尝试运行这些代码时,我没有在舞台上得到任何代码。该代码应该显示四个不同颜色的框,但它根本不起作用。请帮忙。

package code

{

import flash.display.MovieClip;
import flash.events.Event;


public class Main extends MovieClip
{


    private var pads:Array = new Array();

    public function Main()
    {
        var pad:SimonPad;

        pad = new SimonPad(0xAA0000, 0xFF0000);
        pad.x = 5;
        pad.y = 5;
        addChild(pad)
        pads.push(pad)

        pad = new SimonPad(0x0000AA, 0x6666FF);
        pad.x = 205;
        pad.y = 205;
        addChild(pad)
        pads.push(pad)

        pad = new SimonPad(0xAAAA00, 0xFFFF00);
        pad.x = 5;
        pad.y = 205;
        addChild(pad)
        pads.push(pad)

        pad = new SimonPad(0x00AA00, 0x00FF00);
        pad.x = 205;
        pad.y = 205;
        addChild(pad)
        pads.push(pad)

        addEventListener(Event.ENTER_FRAME, theFrame);
    }

    private function theFrame(e:Event):void
    {
        for (var i:int = 0; i < pads.length; i++) 
        {
            (pads[i] as SimonPad).update();
        }
    }
}

}

package code

{

import flash.display.Sprite;
import flash.display.Shape;
import flash.events.MouseEvent;


public class SimonPad extends Sprite
{


    private var dark:Shape;
    private var light:Shape;

    public function SimonPad(darkColor:uint, lightColor:uint)
    {
        dark = new Shape();
        dark.graphics.beginFill(darkColor, 1);
        dark.graphics.drawRect(0,0,190,190);
        dark.graphics.endFill();
        addChild(dark);

        light = new Shape();
        light.graphics.beginFill(lightColor, 1);
        light.graphics.drawRect(0,0,190,190);
        light.graphics.endFill();
        addChild(light);

        light.alpha = 0;

        mouseChildren = false;

        addEventListener(MouseEvent.CLICK, downClicked);
    }

    private function downClicked (e:MouseEvent):void
    {
        flash();
    }

    public function flash():void
    {
        light.alpha = 2;
    }

    public function update():void
    {
        if (light.alpha > 0)
        {
            light.alpha *= 0.85;

            if (light.alpha < 0.0125)
            {
                light.alpha = 0;
            }
        }
    }
}

}

【问题讨论】:

  • 错误是说您在调用 SimonPad 构造函数时没有传入 2 个必需的颜色参数。但是,您显示的代码不会发生这种情况。这必须在您的应用程序的其他地方发生。如果您使用调试 Flash Player,错误消息将包含问题所在的行号/帧号。
  • 也许您通过将库中的对象放入场景/帧中来“手动”实例化 SimonPad。为构造函数参数添加默认值:SimonPad(darkColor:uint=0, lightColor:uint=0) 从构造函数跟踪值以查找所有实例化对象。
  • 我确实调试了 Flash Player,但没有包含行/帧号的错误消息。 - 苏尼尔
  • 我确实尝试输入默认值,但我只得到一个黑色方块而不是两个。 - 斯莫尔尼

标签: flash actionscript argument-error


【解决方案1】:

看起来您在设计时确实在您的舞台上手动放置了一个 SimonPad 实例。请跟踪您的 Flash 项目中手动放置的 SimonPad 实例。此外,为了获取框架,您可以尝试这个技巧:在SimonPad() 函数中,除了为构造函数参数提供默认值外,还添加以下行:

var e:Error=new Error();
trace(e.getStackTrace());

这将为您提供一个跟踪,其中包含at MainTimeline.frameXXX 行中的某些内容,该行有一个帧号,或者at Sprite.constructChildren() at Sprite() at SomeClass(),它会提示您哪个类的库原型具有SimonPad 引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    相关资源
    最近更新 更多