2011-11-13 10 views
1

ここで初心者の質問:私はFlash Builder 4.5のActionscriptプロジェクトで作業しています。ループ内部のクラスの配列要素を参照する方法は?

package 
{ 
    public class ComplexNumber 
    { 
     public var real:Number; // real component 
     public var imag:Number; // imaginary component 
    } 
} 

と、

package 
{ 
    public class ComplexArray 
    { 
     public var real:Array; // real component array 
     public var imag:Array; // imaginary component array 
    } 
} 

と静的関数::

package 
{ 
    public class ComplexDivide 
    { 
     public static function v1p0(a:Number, b:Number, // numerator: a+bi 
            c:Number, d:Number // denominator: c+di 
            ):ComplexNumber 
     { 
      var z:ComplexNumber = new ComplexNumber(); 
      var divisor:Number = c*c + d*d; 

      z.real = (a*c + b*d)/divisor; // real component 
      z.imag = (b*c - a*d)/divisor; // imaginary component   

      return z; 
     } 
    } 
} 

、別の.asファイルに、私はこの関数を呼び出ししようとしている私には、以下のクラスを作成しました

var BXFN_complex:ComplexArray = new ComplexArray(); 
for (var ii:int = 0; ii <= 2; ii++) { 
    BXFN_complex[ii] = ComplexDivide.v1p0(1, 0, 2, 3); 
} 

しかし、コードの内側このループは、次の実行時エラーを生成します。 "ReferenceError:Error#1056:ComplexArrayでプロパティ0を作成できません。したがって、私のコード "BXFN_complex [ii] =〜"は間違っています。誰でも私がやろうとしていることを達成する方法を知っていますか?基本的には、ComplexDivide.v1p0は2つの数値を返します.BXFN_complexは2つの数値配列を含むオブジェクトで、BXFN_complexの配列のii番目の要素に2つの数値を割り当てたいとします。

答えて

2

私は私はあなたが達成しようとしているのかを理解し、率直に言って私は読んで、あなたのコードは、ハードを見つけることを確認していないが、エラーの原因は単純です:

あなたComplexArrayインスタンスがアレイのように動作しません - それが現実とIMAG、2つのメンバー配列を持つオブジェクトである、とあなたがacuallyアドレッシングされているかを指定する必要があります。

BXFN_complex.real[ii] 

または

BXFN_complex.imag[ii] 
0をだけではなく、

BXFN_complex[ii] 

あなただけの複素数型で渡したい場合は、あなたがそれを行うために関数を使用することができます。

(on ComplexArray): 

public function setItemAt (index:int, n:ComplexNumber) : void { 
    real[index] = n.real; 
    imag[index] = n.imag; 
} 

が現実とIMAG配列を初期化することを忘れないでください。アイテムを追加する前に!

最後に、私は、プリミティブなNumber値の2つの配列を保持するComplexArrayの代わりに、ComplexNumbersを保持するプリミティブ配列を使用しない理由を理解していません - 前と同じようにBXFN_complex[ii]を使用できます。

+0

Weltraumpiratありがとうございます、私はあなたの最後の提案を取りました。 – ggkmath

関連する問題