flex:为基元分配id

时间:2011-04-21 18:17:26

标签: flex graphics flex4 primitive

我通过动作脚本在屏幕上创建了一些flex原语。现在基于业务逻辑,我需要对其中一些原语进行更改,例如:更改厚度,箭头方向等

一个想法就是在构建这些原语时将id分配给这些原语 - 我该怎么做?

e.g。我得到一条如下所示的线

var myShape:Shape=new Shape();    
myShape.graphics.lineStyle(thickness,color);    
myShape.graphics.moveTo(XFrom,YFrom);    
myShape.graphics.lineTo(XTo,YTo);

如果根据某些条件,我想改变上面的颜色/厚度,我如何参考上面的这一行?

2 个答案:

答案 0 :(得分:1)

它可以想象这是在某种组件中完成的。所有UIComponents都有lifecycle您想要遵守的内容。您可以覆盖多个函数以获得所需的功能。像这样:

private var _shape:Shape;

override protected function createChildren():void
{
   super.createChildren();
   if(!this._shape)
   {
      this._shape = new Shape();
      addChild(this._shape);
   }

}

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
   super.updateDisplayList(unscaledWidth, unscaledHeight);

   this._shape.graphics.lineStyle(thickness,color);    
   this._shape.graphics.moveTo(XFrom,YFrom);    
   this._shape.graphics.lineTo(XTo,YTo);
}

如果你希望它在数据更改时运行,你应该查看invalidateDisplayList,你会在任何数据发生变化后调用它,它将在下一帧运行updateDisplayList函数。

答案 1 :(得分:1)

我提出了一种更简单的方法

基本上不是直接绘制图元,而是将绘图分配给将返回Shape对象的shape函数。

现在,原始行有一个简单的处理程序来更改属性。如果您需要有关如何实现此目标的更多具体细节,请与我们联系