0

ボタンにリンクされた外部アクションスクリプトファイルにある関数にパラメーターを渡す方法を知りたいです。上記のコードでボタンをクリックすると、次のエラーが発生します。関数に値を渡す方法に問題があると思います。助けてください。

ArgumentError: Error #1063: Argument count mismatch on Node(). Expected 1, got 0.
at flash.display::Sprite/constructChildren()
at flash.display::Sprite()
at flash.display::MovieClip()




package
{
    import flash.display.MovieClip;
    import flash.events.*;
    import flash.display.SimpleButton;

    public class Node extends SimpleButton
    {
          public var left:Node;      // left child
          public var right:Node;    // right child
          public var value:int = int.MAX_VALUE;   // value in node
          public var test:int;

          public function Node(c:int):void
            {
                value = c;
                addEventListener(MouseEvent.CLICK, AddClick);
            }
            public function AddClick(e:Event):void
            {

                Node(25);
                trace(value);
            }

    }//class

}//package
4

1 に答える 1

0

ライブラリでオブジェクトを作成し、そのオブジェクトのクラスを作成する場合、そのオブジェクトを 2 つの方法でインスタンス化できます。

  1. ライブラリからインスタンスをドラッグしています。コンストラクター関数にパラメーターを渡すことはできません。

  2. newコマンドによるインスタンスの作成。コンストラクター関数にパラメーターを渡すことができます。

両方のメソッドでオブジェクトをインスタンス化する場合は、コンストラクタ パラメータのデフォルト値を設定する必要があります (メソッド 1 の場合)。

public function Node(c:int=0)

メソッド1でオブジェクトを作成すると思います。エラーは、ボタンを押したときではなく、アプリの起動時に発生します。

ちなみに、あなたのコードでは、コンストラクター関数を奇妙な方法で呼び出しています:) Node(25);-間違っています、必要ですvar foo:Node = new Node(25);

値を 25 に変更したい場合は、次のように記述します。

public function AddClick(e:Event):void
      {

                value = 25;
                trace(value);
      }

クラス Node のすべての関数と値は、1 つのスコープに「存在」し、直接アクセスできます。

于 2013-03-01T09:06:52.543 に答える