2011-04-21 59 views
1

我已经通过操作脚本在屏幕上创建了几个flex基元。现在基于业务逻辑,我需要对这些基元进行更改,例如:更改厚度,箭头方向等flex:将id分配给基元

一个想法是在构建这些基元时将id分配给它们 - 我该怎么做?

例如我内置得到如下

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

如果行,基于一些条件,我想改变上述的颜色/厚度,我如何引用这条线以上?

回答

1

我想出了一个更容易的方法

基本上而不是直接绘制的图元,分配抽奖的形状函数会返回一个Shape对象。

现在原始线有一个简单的处理程序来更改属性。让我知道你是否需要更具体的细节如何实现这个

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函数中。