在Flex元素,我們可以通過這個分配狀態的元素:的Flex includein
<s:Button id="mybtn" includeIn="mystate" label="button label"/>
我們怎樣才能做到includeIn
使用ActionScript?
謝謝。
在Flex元素,我們可以通過這個分配狀態的元素:的Flex includein
<s:Button id="mybtn" includeIn="mystate" label="button label"/>
我們怎樣才能做到includeIn
使用ActionScript?
謝謝。
國家是MXML概念,而不是AS概念。在AS中,您必須在覆蓋函數set currentState中編寫自己的邏輯。
override public function set currentState(value:String):void
{
super.currentState = value;
//write your logic for states
}
includeIn
僞屬性只存在於MXML語言中。我將其稱爲僞屬性,因爲它沒有映射到屬性或樣式(在您的示例中爲Button類)。
相反,它是舊mx AddItems標記的簡寫符號。在這句法您的例子是這個樣子:
<mx:states>
<mx:State name="normal"/>
<mx:State name="mystate">
<mx:AddItems items="{mybtn}"/>
</mx:State>
</mx:states>
<mx:Button id="mybtn"/>
我提到這一點,因爲這是includeIn
產生的ActionScript代碼非常相似。這看起來是這樣的:
states = [
new State ({
name: "normal",
overrides: []
}),
new State ({
name: "mystate",
overrides: [
new AddItems().initializeFromObject({
itemsFactory: _TestFlex_Button1_factory,
destination: null,
position: "first"
})
]
})
];
不同之處在於它使用工廠來實例化按鈕。
請注意,如果您對從MXML代碼生成的ActionScript代碼感興趣,則只需將keep-generated-actionscript
標誌傳遞給編譯器(請參閱mxmlc compiler options),即可查看該代碼。
當然,如果你真的想「手動」寫邏輯(我不會),它可能是更容易覆蓋setCurrentState()或監聽CURRENT_STATE_CHANGE事件,並調用addElement()
或removeElement()
取決於currentState
值。
使用按鈕ID在AS3中使用includeInLayout元素。 –