0

ArgumentError: Error #1063: Argument count mismatch on code::SimonPad() というエラーが表示され続けます。2 が必要で、0 になりました。特に uint では、何が起こっているのかわかりません。どんな助けでも大歓迎です。以下に 2 つのコード ブロックを表示しました。これらは Actionscript 3.0 に基づいています。これらのコードを実行しようとしたとき、ステージ上で何も得られませんでした。このコードは 4 つの異なる色のボックスを表示するはずですが、まったく機能しませんでした。助けてください。

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

}

4

1 に答える 1

2

SimonPad設計時にステージ上に手動で配置されたインスタンスが実際にあるようです。SimonPad手動で配置されたインスタンスについては、Flash プロジェクトを追跡してください。また、フレームを取得するために、次のトリックを試すことができます:SimonPad()関数では、コンストラクタ引数のデフォルト値を提供するとともに、次の行を追加します:

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

at MainTimeline.frameXXXこれにより、フレーム番号を持つ行に何かを含むトレースが表示されます。またはat Sprite.constructChildren() at Sprite() at SomeClass()、どのクラスのライブラリ プロトタイプにSimonPad参照があるかについてのヒントが得られます。

于 2013-03-18T11:50:09.520 に答える