2012-03-04 6 views
-1

MovieClipを拡張するCustomButtonクラスを開発しようとしていますが、問題があります。私はこのエラーを持っている:MovieClip extension

ArgumentError: Error #1063: Argument count mismatch on mkh.custombutton::CustomButton(). Expected 2, got 0. at flash.display::Sprite/constructChildren() at flash.display::Sprite() at flash.display::MovieClip()

私は自分のコードをデバッグしようとしたが、それは私がどこに問題があるが、私はそれはコンストラクタでいたと確認していない

"Cannot display source code at this location."

を言う:

public function CustomButton(buttonlabel:String, animationAR:Array,  active:Boolean=true, animated:Boolean = false, type:String = "free", group:int = 0) 

誰かが私を助けてくれたら大変感謝しています。ありがとうございました。

EDIT2:私はなぜそれが出現していないか分かっていると思うので、気をつけてください。

+0

私は単にコンストラクタ以上のものを見る必要があります...あなたがクラスを初期化する方法とコンストラクタを呼び出す場所を貼り付けてみてください。私は一見して何かが飛び出すかどうかを見ていきます。 –

+0

問題の内容を正確に伝えるために必要なコードがすべて表示されていないため、この質問を閉じるために投票しています。これの症状は、コンストラクタの引数に関する質問に3つの答えがあるという事実です。それはばかげている。このエラーを引き起こすコードを投稿してください。デバッガがソースを表示できないと言っても、10秒以上のデバッグに費やされていないと判断する方法がわからない場合は、アプリがファイルをコンパイルするまで、コードをコメントアウトしてください。それができたら、あなたは違反行を見つけました。それらを投稿してください。 –

+0

また、この質問を編集して、Jeopardyのミニゲームではなく、実際の特定の質問に変えてしまえば、私のdownvoteも削除します。 –

答えて

1

私は問題が何であるかを知っていると思いますが、私はあなたに明確に説明することができます(英語は私の母国語ではありません)。 FlashプログラムでMovieClipを作成し、それをあなたのCustomButtonクラスにリンクしましたか?その場合、ステージ上にあるSprites/MovieclipsオブジェクトをFlashが作成するときに、というパラメータを使用せずにコンストラクタを呼び出すので、ステージ上にあるインスタンスには注意してください。これを避けるために

、次のいずれかをごCustomButtonClassですべてのパラメータの

  • 設定のデフォルト値(EDIT:あなたの問題を解決するだろうが、非常に良い習慣ではありません)

  • 使用addChildボタンのインスタンスをステージに配置する(私はこれをお勧めします)

希望すると便利です!

+0

-1です。コンストラクタ引数を持つことの全体的なポイントは、オブジェクトの構成であり、デフォルトの束を設定することはばかげているだけです。コンストラクタで特別なものを抽象化する必要がない場合は、コンストラクタの引数をすべて削除し、カプセル化されたメンバとアクセサを使用して、作成後のオブジェクトをカスタマイズする必要があります。 –

+0

私はFlashで始まったときに何度もこの問題に遭遇したので、私は彼に問題を解決する正しい方法を与えていると確信しています。実際に私の答えをdownvotingする前に読んでいれば、実際に私のお勧めはデフォルト値を設定するのではなく、ADDCHILD(彼が得ている問題については彼が使用していないと確信しています)を使用することでした。あなたが質問も私の答えも理解していなければ、どうしてあなたは何かをdownvotingしているのだろうか? – danii

+0

ステージにオブジェクトを追加し、コンストラクタがparamsなしで呼び出されたことについて、パートをスキップしたので、私はdownvoteを削除しました。それは実際には理にかなっています。しかし、コンストラクタの引数がたくさんあることによってオブジェクトの構成が貧弱であるということにはまだ完全に同意していません。 –

2

あなたは、引数を渡さずにCustomButtonをインスタンス化する必要があるようです。そのよう

: - BUTTONLABELとanimationAR(彼らはデフォルト値が割り当てられているので、残りはOKです)

var cBtn = new CustomButton(); 

はただし、コンストラクタが渡されなければならない2つの引数を持っています。

ですから、このような何かやるべきこと:あなたがあなたのコンストラクタを定義してみましょう

var cBtn = new CustomButton('Test', someArray); 
+1

この答えを展開するには、より多くのパラメータを送信できることに注意してください。最初の2つは必須パラメータです。 –

+0

実際に私は2つの引数を使用しました:public var mcButton:CustomButton = new CustomButton( 'Hello'、arAR、true); – MKII

+0

@MKII:そうだとすれば、これを解決するには十分な情報がありません。あなたはいくつかの情報を追加する必要があります。 –

0
public function CustomButton(
     buttonlabel:String, 
     animationAR:Array, 
     active:Boolean=true, 
     animated:Boolean = false, 
     type:String = "free", 
     group:int = 0 
    ); 

を。つまり、最初の2つの引数(buttonlabel abd animationAR)は必須の引数です。残りはオプションです。

は今、あなたは

var cb:CustomButton=new CustomButton(); 

は、あなたがそのエラーをスローしますconstructotに引数を渡していないように、これをインスタンス化しようとした場合。
これは、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 
} 

OR ELSE、あなたが

としてオブジェクトをインスタンス化でき
var cb:CustomButton=new CustomButton("My Crazy-ass CustomButton", animArray); 
+0

実際に私は2つの引数を使用しました:public var mcButton:CustomButton = new CustomButton( 'Hello'、arAR、true); – MKII

+1

これは、実際の攻撃ラインを@MKIIで正しくデバッグして投稿することを学ぶ必要がある理由です。クラスをランタイム共有ライブラリにコンパイルしてそこからインスタンス化していない限り、コンストラクタは明らかに問題の原因ではありません。これは、IDEが違反行のソースコードを表示できないことを示していることを確認することでわかります。このエラーがクラスコンストラクターとクラス、そしてインスタンス化する行がプレーンテキストでコンパイルされている場合、コンパイラーはエラーの原因を表示できます。推測と非常に悪いオブジェクトの構成を促進するためには、 –