2011-07-19 24 views
0

因此,我使用的是我在網上找到的自定義自動提示組件,網址爲http://hillelcoren.com/flex-autocomplete/。該項目的背景色設置在以下文件夾中:com> hillelcoren> components> autoComplete> FlowBox.mxml。在有硬編碼的背景顏色爲白色:Flex 3:是否有一種簡單的方法可以在主應用程序中更改組件內的值?

<mx:Canvas 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    xmlns="com.hillelcoren.components.autoComplete.classes.*" 
    verticalScrollPolicy="off" horizontalScrollPolicy="off" 
    borderStyle="inset" backgroundColor="#FFFFFF" 
    initialize="init()" clipContent="true" 
    xmlns:components="com.hillelcoren.components.*"> 

我使用這個組件從我創建了名爲位於一個名爲「模塊」文件夾中的「position.mxml」組件中。有沒有什麼方法可以從位置模塊中更改自動提示框的背景顏色?

回答

1

真的這取決於組件架構,我沒有鑽入Hillel的AutoComplete組件的體系結構。

樣式通常是繼承的,所以理論上在位置組件或自動完成上設置backgroundColor樣式是設置值的一種方法。但是,我希望一個「硬編碼」樣式覆蓋這種繼承,除非你在組件初始化後設置它。

另一種方法是修改Hill​​el的組件以將此值作爲樣式公開。理論上這並不難;在實踐中,複雜的架構可能會使其變得困難。 More info on creating custom styles

第三種方法是深入到組件並設置樣式。例如:

positionInstance.autoCompleteInstance.flowBoxInstance.setStyle('backgroundColor',myNewStyle); 

當然,所有相關的組件實例都必須公開才能這樣做。

第四種方法可能是使用不同的組件。 The Flextras AutoComplete組件是一個本地Spark組件,它可以很容易地創建一個自定義皮膚,用於更改任何相關皮膚部件的背景顏色。

+0

Flextras自動完成功能是否可以根據一個布爾值改變bg顏色,這個布爾值在應用程序正在使用時經常發生變化? – Brds

+0

@Brds您在組件類上設置的樣式是在皮膚類中繼承的;所以你可以用一個自定義皮膚類來輕鬆地模擬一些東西。我非常確定,當在組件類中設置樣式時,skin類的styleChanged()方法將會觸發;那就是你可以進行切換的地方。但是,這並不是我們的組件所特有的,它只是框架的運作方式。 – JeffryHouser

相關問題