2012-12-01 2 views
0

.mxml에서 상태를 정의 할 수 있다는 것을 알고 있습니다. 문제는 응용 프로그램 또는 구성 요소가 언제든지 해당 주 중 하나에있을 수 있다는 것입니다.플렉스 (특히 모바일) 상태 - 여러 개의 동시 상태?

Flex Mobile을 프로그래밍 할 때 가로/세로 (방향)는 컨트롤/구성 요소/요소가 표시되는지 (dis/en) abled인지 또는 일정 비율로 음영인지 쉽게 정의해야하는 경우가 종종 있습니다 그림 물감. 하지만 우리의 앱이나 구성 요소에는 다른 방향, 예를 들어 SufficientCredit 및 InsufficientCredit과 같은 화면 방향과는 별도의 상태가 있습니다.

상태가 SufficientCredit 인 경우에만 제출 단추를 표시한다고 가정 해보십시오. 그러나 휴대 전화의 방향을 변경할 때도 다른 컨트롤을 표시하거나 숨기거나 색칠해야합니다. 실생활에서 귀하의 신용 상태는 실제로 SufficientCredit이지만, 귀하의 앱은 이제 Portrait 또는 Landscape 상태에 있습니다. 이제 InsufficientCredit 상태가 아니지만 제출 버튼이 사라집니다.

LandscapeSufficientCredit, LandscapeInsufficientCredit, PortraitSufficientCredit 및 PortraitInsufficientCredit와 같은 "결합"상태를 만들고 싶지 않습니다. 상태를 모두 버리고 각 지사가 구성 요소 속성 (색상, 크기, 가시성 등)을 수정하는 코드를 포함해야하는 거대한 if-else 문을 작성한 다음 여러 위치에서 호출하는 것을 기억해야합니다. 그것은 국가를 바꿀 것입니다.

나는 국가 그룹에 대해 들어 봤지만, 그들에 대한 문서는 정말 혼란스럽고,이 경우에 도움이 될지 확신 할 수 없습니다.

+0

Stategroups는 아마도 원할 것입니다. 그러나 나는 문서가 혼란 스럽다는 것에 동의한다. 설명 할 시간이 없습니다. [여담으로; 모바일에서 최상의 성능 결과는 아마도 자신의 레이아웃/코드를 updateDisplayList()에 작성하고 MXML을 사용하지 않을 것입니다. – JeffryHouser

+0

ActionScript에서 레이아웃/표시, 오리 엔테이션 및 기타 상태를 "감지"할 수있는 많은 조건과 명시 적 구성 요소 속성 할당이 포함되어 있습니다. 나는 그렇게 나쁘지는 않다고 생각하지만, 그것은 훨씬 더 많은 작업/유지 보수 일뿐입니다. 그때까지, 나는 국가 그룹에 대한 더 나은 설명을 계속해서 찾아 볼 것입니다. –

+0

내가 작성한 앱에서. 난 그냥 가로/세로에 대한 고려없이 물건을 표시하는 방법을 결정하는 updateDisplayList()의 unscaledWidth/unscaledHeight를 사용합니다. 물론, 나는 많은 애플 리케이션에 중요하게 될 존중할 수 있습니다. 때로는 자신의 레이아웃 코드 작성이 지루할 수 있습니다. 그러나 그것은 어렵지 않습니다. – JeffryHouser

답변

0

두 상태를 동시에 원한다면 그 상태는 독립적 인 매개 변수에 영향을 미칩니다 (화면 방향과 색은 독립적이라고 생각합니다).

이 경우 특정 부모 상태를 감시하고 내부에서 처리하는 일부 하위 구성 요소를 만들어야 할 수 있습니다.

이 경우 상속 된 스타일로 구현할 수도 있습니다. 부모 구성 요소에서 setStyle ("Credit", "Insufficient")를 호출하면 해당 스타일을 아는 모든 하위에서 이에 따라 표현이 변경됩니다.

0

StateGroups 대답입니다. 당신의 상태를 확인하려면보기 오버라이드 (override)에서 다음

<s:State name="portrait" group="portraitStates"/> 
<s:State name="landscape" group="landscapeStates"/> 
<s:State name="portraitState1" group="portraitStates, state1States"/> 
<s:State name="landscapeState1" group="landscapeStates, state1States"/> 
<s:State name="portraitState2" group="portraitStates, state2States"/> 
<s:State name="landscapeState2" group="landscapeStates, state2States"/> 

getCurrentState() 메소드 : 당신은 같은 일을 할 수있다. 예 :

휴대 전화/태블릿 + 여러 상태에 대해 가로/세로가 모두 한 번에 표시되도록했습니다.