如何使用单个视图显示多个模型数据 - mvc

时间:2012-09-08 09:53:14

标签: model-view-controller view model

我创建了一个VectorModel(存储矢量数据,如起点和终点)和VectorView(显示矢量)类。

我想创建两个圆(c1和c2)并在每个圆和鼠标位置(v1和v2)之间显示一个向量,然后仅显示最小的向量。(如果鼠标靠近c1只显示v1,如果它接近c2,仅显示v2)。 v1和v2是两个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);
}

结果在每个圆圈和鼠标位置之间显示两条线(矢量)

我试图通过为每个VectorModel创建一个VectorView来解决这个问题,尽管有这个错误它仍然有效: 错误#1009:无法访问空对象引用的属性或方法。(如何解决此问题?)

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

有更好的方法吗? 感谢您的时间和帮助;)

0 个答案:

没有答案