1

VectorModel (始点と終点などのベクター データを格納する) クラスと VectorView (ベクターを表示する) クラスを作成しました。

2 つの円 (c1 と c2) を作成し、各円とマウスの位置 (v1 と v2) の間のベクトルを表示し、最小のベクトルのみを表示します (マウスが c1 に近づくと v1 のみが表示され、c2 に近づくと v1 のみが表示されます)。 、v2 のみを表示)。v1 と v2 は 2 つの VectorModel インスタンスです。

単一の VectorView インスタンスを作成し、毎回 VectorModel パラメータを渡すことが可能かどうかを知りたいです。それが私がそれをやろうとした方法です:

private function enterFrame(e:Event):void
{
    //update v1 and v2
    _v1.update(_c1.x, _c1.y, mouseX, mouseY);
    _v2.update(_c2.x, _c2.y, mouseX, mouseY);

    if (_v1.m < _v2.m)
    {//display v1
          displayVector(_v1);
    }else if(_v1.m > _v2.m)
    {//display v2
         displayVector(_v2);
    }
}

private function displayVector(v:VectorModel):void
{
     var vView:VectorView = new VectorView(v);
     addChild(vView);
}

結果は、各円とマウス位置の間の 2 つの線 (ベクトル) を表示します

各 VectorModel の VectorView を作成してこの問題を解決しようとしましたが、次のエラーにもかかわらず機能しました: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません (これを回避する方法は?)

private function enterFrame(e:Event):void
{
 //update v1 and v2
    _v1.update(_c1.x, _c1.y, mouseX, mouseY);
    _v2.update(_c2.x, _c2.y, mouseX, mouseY);

    if (_v1.m < _v2.m)
    {//display v1
        displayVector("v1");
    }else if(_v1.m > _v2.m)
    {//display v2
        displayVector("v2");
    }
}

private function displayVector(v:String):void
{
   if (v=="v1")
   {
        addChild(_v1View);
        if (_v2View.parent!=null)
        {
               removeChild(_v2View);
        }

   }else if(v=="v2")
   {
        addChild(_v2View);
        if (_v1View.parent!=null)
        {
             removeChild(_v1View);
        }
   }
}

それを行うより良い方法はありますか?お時間をいただき、ご協力いただきありがとうございます;)

4

0 に答える 0