flash - actionscript doc
플렉스 요소 includein (2)
Flex에서는 다음을 통해 요소에 상태를 할당 할 수 있습니다.
<s:Button id="mybtn" includeIn="mystate" label="button label"/>
ActionScript에서 includeIn
을 어떻게 할 수 있습니까?
고맙습니다.
상태는 AS 개념이 아닌 MXML 개념입니다. AS에서는 재정의 함수 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 컴파일러 옵션 참조).
물론 '수동으로'논리를 쓰고 싶다면 setCurrentState () 를 재정의하거나 CURRENT_STATE_CHANGE 이벤트를 수신하는 것이 더 쉬울 수 있으며, 값에 따라 addElement()
또는 removeElement()
호출하는 것이 더 쉽습니다. currentState
.