2009-09-19 67 views
0

我有一個flex應用程序,我想在運行時添加一個新的自定義組件。 這工作正常。我創建了我的自定義組件並添加了以下代碼:向flex自定義組件添加效果

var freeView:FreeView=new FreeView(); 
freeView.setStyle("showEffect",this.fadeIn); 
freeView.setStyle("hideEffect",this.fadeOut); 
freeView.visible=false; 
this.addChild(freeView); 
freeView.visible=true; 

但是我的問題是淡入效果無法正常工作。我知道我已經正確地聲明瞭效果,因爲如果我在另一個組件(如面板)中使用它,它可以正常工作。 有人可以幫我解決這個問題嗎? 此致敬禮!

+0

如果你能提供更多的信息,比如什麼父組件看起來像周圍做它的其他方式。另外,請嘗試使用編輯器中的代碼格式化按鈕來幫助提高您的問題的可讀性。 – Stiggler 2009-09-19 18:30:02

回答

0

最後我以不同的方式解決問題。 相反,在運行時添加組件時,我已將組件添加到應用程序並將visible屬性設置爲false,並在需要時將其更改爲true。

0

確保您在FreeView子類中調用任何重寫的Flex超級函數。

的updateDisplayList尤其和的commitProperties:

override protected function updateDisplayList(w:Number, h:Number) 
{ 
    super.updateDisplayList(w, h); 

    // Your code here. 
} 


override protected function commitProperties() 
{ 
    super.commitProperties(); 

    // Your code here. 
} 

你重寫的高級別容器類(例如帆布或HBox中)或也是UIComponent的一個?

0

您可以通過影響目標設置到新的元素

<mx:Fade id="showFlag" alphaFrom="0" alphaTo="1" duration="5000"/> 

var flag:Image = new Image; 
flag.source = flagSource; 

something.addElement(flag); 

showFlag.target = flag; 
showFlag.play();