2011-04-21 47 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函數中。