2011-04-26 62 views
0

我在我的應用程序中使用了狀態。事情是我已經使我的列表中的第一項被選中。所以我給了這個樣子,在flex中切換狀態4

if(itemIndex == 0) 
    this.currentState="selected"; 

這個工程罰款。問題是,當其他項目被選中的第一個項目不會改變其狀態,但仍處於選中狀態,直到它的點擊。 我的代碼看起來像這樣,

<s:BorderContainer id="outerCont" width="275" height="100" borderVisible="false" 
         backgroundColor.normal="#3D3C3C" backgroundAlpha.selected="0.1" 
         backgroundColor.selected="{data.color}"> 

我的狀態是這樣的,提前

<s:states> 
    <s:State name="normal" /> 
    <s:State name="hovered" /> 
    <s:State id="selState" name="selected" /> 
</s:states> 

謝謝!

回答

1

在您更改狀態的代碼中,您永遠不會回到默認狀態。所以,當itemIndex是0時;你設置爲選中狀態;但沒有顯示代碼從選定狀態移開。嘗試是這樣的:

<s:List change="onChange()" /> 

<fx:Script><[[ 
    public function onChange():void{ 
    if(itemIndex == 0) 
    this.currentState="selected"; 
    else 
    this.currentState="someOtherState"; 
    } 
]]></fx:Script> 

是否幫助:

if(itemIndex == 0) 
    this.currentState="selected"; 
else 
    this.currentState="someOtherState"; 

當在Flex列表中選擇一些你可以使用更改事件要更改狀態?如果不;你將不得不詳細說明一點。

+0

嘿謝謝你的回覆,我的期望是默認情況下應用程序加載第一個項目時應該選擇。因此,在creationComp我給了代碼if(itemIndex == 0) this.currentState =「selected」; 。然後,當任何其他項目被點擊時,默認選擇的第一個項目不會被取消選擇,除非和直到它再次點擊。因此,我有兩個項目被選中。希望清除它現在.. – Naveen 2011-04-27 04:34:21

+0

@Naveen您的評論其實是更混亂。對於許多基於Flex列表的組件;默認狀態是「沒有選擇」。由於您從未告訴我們您正在使用什麼組件,以及如何選擇項目;接下來告訴你什麼,我不知所措。我建議你添加更多的代碼,可能是一個可運行的樣本來展示你的問題。 – JeffryHouser 2011-04-27 13:43:09

+0

嘿,對不起,我會嘗試清楚解釋你這次。我正在嘗試類似於以下鏈接中發佈的內容。 http://blog.flexexamples.com/2010/01/27/creating-a-fancy-spark-list-control-item-renderer-in-flex-4/.I遵循相同的代碼,唯一的補充我有由是我創作完成方法我已經作出選擇我的第一個項目,像這樣的「保護功能itemrenderer1_initializeHandler():無效 \t \t \t { \t \t \t \t如果(this.itemIndex == 0) \t \t \t \t { \t \t \t \t \t //this.selected=true; \t \t \t \t this.currentState =「selected」; \t \t \t \t \t validateNow(); \t \t \t \t} \t \t \t}」 – Naveen 2011-04-28 04:49:56