2012-03-21 4 views
0

나는이 코드 조각을 발견하고 흥미를 끌었습니다. 나는 전에 이런 스키닝을 보지 못했다. 나는 거기에 단점과 대안이 있는지 알고 싶다. 예를 들어, addChild 호출과 같이 CPU 집중적입니까?문서 상태를 통해 Flex에서 버튼 스키닝

<s:Button id="loginoutBtn" right="10" top="10" label="Log out" label.loggedout="Log in" skinClass.loggedin="skins.FBLogoutButtonSkin" skinClass.loggedout="skins.FBLoginButtonSkin" click.loggedin="logout()" click.loggedout="login()"/> 

배경 : 위의 버튼은 로그인 예의 일부입니다. 나는 skinning 많은 일을했지만 프로세스는 거의 항상 새로운 피부로 갈 새로운 구성 요소가 발생했습니다. 또한 ToggleButton을 사용하지만 위의 경우에는 좋은 유스 케이스가 될까요?

xy 위치에 로그인 및 로그 아웃 버튼이 있어야한다면 어떻게해야할까요?

나는

<s:Button id="loginBtn" includeIn="loggedIn" right="10" top="10" skinClass="skins.FBLoginButtonSkin" click="login()"/> 

<s:Button id="logoutBtn" includeIn="loggedOut" right="10" top="10" skinClass="skins.FBLogoutButtonSkin" click="logout()" /> 

답변

1

이 특별한 경우에는 사용자 정의 스킨이있는 ToggleButton을 사용합니다.

왜?

  • 하나의 사용자 정의 스킨은 '호스트'요소에서 두
  • 클리너 코드 대신 필요한 : 두 개의 버튼이 필요하지 않습니다 또는 주 관련 속성의 무리; 단지 '선택'은 국가에 구속되어야합니다.
  • 질문 : 아마도 CPU 사용량이 적은 옵션입니다. 왜냐하면 A.에는 하나의 버튼과 B. 만 있기 때문에 하나의 스킨 만 있기 때문입니다. 솔직히 말해서 어쨌든 정말로 중요하지 않습니다. 단일 버튼의 성능은 실제로 중요하지 않습니다.

.

<s:ToggleButton id="loginBtn" selected.loggedin="true" selected.loggedout="false" 
       skinClass="skins.FBLoginToggleButtonSkin" 
       click="logInOrOut(loginBtn.selected)" /> 

참고 :

<s:Label text="log in" text.selectedStates="log out" /> 
+0

나는 스킨을 다목적으로 생각했다. 그러나 이것들이 더 많이 만들어 졌다고 생각한다.이게 당신이보고있는 경우인가요? –

+0

@ 1.21gigawatts 일부 스킨은 '다목적'일 수 있습니다 (일반적으로 테마에서 만드는 것). 예를 들어 하나의 ButtonSkin을 만들어서 모든 응용 프로그램에서 모든 Button에 적용 할 수 있습니다. 다른 것들은 일회성 일 수 있습니다. 재사용 할 수없는 사용자 지정 구성 요소의 경우 일 수도 있지만 이러한 상황과 같은 특정 상황에서 재사용 가능한 구성 요소에도 적용 할 수 있습니다. 해당 구성 요소의 특정 스타일로 스킨을 보았습니다. 구성 요소를 다른 방식으로 표시하는 방법 일뿐입니다. 그 행동이나 의미를 바꾸면 안됩니다. – RIAstar

+0

RIAstar –

1

당신은 두 개의 버튼 또는 하나 개의 버튼을하고 등록 정보를 변경할 수 있습니다, 내가 그들의 관련 스킨 및 각각에 대한은 includeIn로 설정 두 개의 버튼이있을 것이다,이 경우에는 생각 때문에. 성능에 미치는 영향의 차이를 보려면 생성 된 AS3 코드를 유지해야 할 수 있습니다. 자세한 내용은이 링크를 참조하십시오.

http://saravananrk.wordpress.com/2008/05/26/keep-generated-actionscript-in-flex/

두 가지 접근법이 유효하지만 나는 그들이 미래에 변경 될 가능성이로 두 개의 서로 다른 버튼을 선호하고 더 많은 다른 될 것입니다. 모든 속성이 상태를 기반으로하는 버튼이 하나도없는 것은 아닙니다. 버튼 두 개를 가지고있어 코드를 깨끗하게 유지할 수 있습니다.

+0

감사 @keyle - 당신이 한번에 또는 프로젝트 당 스킨을 만들려면 어떻게해야합니까 : 두 개의 레이블이 지정 ToggleButtonSkin 내부 정의 할 것인가? (같은 질문은 RIAstar –

+0

하나의 스킨과 2 개의 CSS 속성 – keyle