2013-07-03 51 views
1

在Flex 4中,它允許在Spark MXML項目渲染器中使用狀態嗎?在Spark項目渲染器中使用自定義狀態

我問這個,因爲已經有「內建」狀態像

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

我可以添加自己的自定義狀態,如「遊戲內」和「inlobby」?

即使MXML項目渲染器中的AS3代碼不使用/需要它們,我仍然應該寫出「正常」和「懸停」嗎?

回答

3

在Flex 4中,它允許在Spark MXML項目渲染器中使用狀態嗎?

是的!渲染器就像其他任何組件一樣;如果你願意,你可以添加狀態。

我不確定Flex List如何處理設置渲染器的狀態。因此,渲染器中的狀態可能會從您的「自定義」狀態更改爲其中一個Flex狀態。您可能必須重寫currentState變量以防止這種更改。

即使我的MXML項目渲染器中的AS3代碼不使用/需要它們,我仍然應該寫出「正常」和「徘徊」嗎?

不,如果你不需要,不要添加它們。當鼠標交互(如懸停)發生時,ItemRenderer將最終調用其getCurrentRendererState()方法來決定在渲染器上設置的狀態。在這種方法中有很多這樣的語句:

if (hovered && hasState("hovered")) 
    return "hovered"; 

如果沒有匹配,它將使渲染器的狀態保持不變。

+0

是的,這就是我所擔心的:將鼠標懸停在項目上會將狀態從我的自定義「遊戲名稱」更改爲「懸停」... –

+0

您必須嘗試一下才能看到。如果你自己的組件沒有實現「懸停」或「正常」狀態,那麼應該沒有問題。 [我認爲] – JeffryHouser

+2

@AlexanderFarber我編輯@ Reboog711的(希望你不介意!)回答解決你的其他問題。這也會讓你瞭解它會如何幹擾你自己的國家。如果需要解決它,請覆蓋'getCurrentRendererState()'。 –

相關問題