2012-02-10 2 views
0

? 문제는 아주 간단합니다. Button을 ImageButton으로 확장하고 ImageButtonSkin을 만들기 위해 ButtonSkin을 확장했습니다. 그러나 때이 같은 hostComponent을 정의하십시오 ButttonSkinBase 내부 ButtonBase :상위 모바일 스킨의 hostComponent를 재정의하는 모바일 모바일 스킨?

public var hostComponent:ImageButton 

내가 hostComponent과 충돌이 있음 오류가 발생합니다.

스킨을 확장하고 새 스킨 구성 요소를 제공하려면 어떻게합니까?

+0

나는 그렇게 생각하지 않는다. 또한, 왜 ImageButton을 만들고 싶습니까? 스파크 버튼에는 이미지를 줄 수있는 '아이콘'스타일이 있습니다. – RIAstar

+0

와우, 멋지다. 따라서 스킨을 확장 할 수는 있지만 부모 스킨이 지정한 구성 요소에만 사용할 수 있습니다. ImageButton 왜냐하면 전체 아이콘이 아이콘뿐만 아니라 이미지 배경을 가지기를 원하기 때문입니다. IT 부서는 대개 텍스트가 없어도됩니다. – Ska

+0

아하, 그 경우에는 속성 대신 커스텀 버튼의 스타일로 만들 것입니다. 그런 식으로'getStyle()'메소드를 통해 스킨에서 접근 할 수 있으며'hostComponent'를 오버라이드 할 필요가 없습니다. – RIAstar

답변

2

어떻게 스킨을 확장하고 새 호스트 구성 요소를 제공합니까?

왜해야합니까? hostComponent는 ImageButton이 확장하는 ButtonBase입니다. 왜 당신은 hostComponent의 타입을 변경해야합니까? 당신이하여 ImageButton으로 hostComponent에 액세스해야하는 경우에, 당신이 캐스팅 할 수 있습니다

var myImageButton : ImageButton = hostComponent as ImageButton; 

을이 질문에 대한 코멘트, 당신은 말했다 :

그래서, 당신은 피부를 확장하지만, 수 은 부모 피부가 지정하는 구성 요소에이를 사용합니다. 놀라운 것입니다.

전혀 사실이 아니어야합니다. hostComponent에 ButtonBase 유형이 있지만 ButtonSkin을 확장한다고 말했습니까? 귀하의 진술에 따라 ButtonBase를 ButtonBase 구성 요소에서만 사용할 수 있습니다. 그건 사실이 아니야.

또한 @ RIAstar의 메타 데이터에 대한 설명에 하나의 설명을 추가 할 것입니다. 메타 데이터는 컴파일러에서 코드 힌트 및 MXML 매개 변수를 확인하는 데만 사용됩니다. 둘 중 하나를 사용하여 스타일을 쉽게 만들 수 있습니다. 당신은 방금으로 setStyle 방법을 사용하여 값을 설정해야합니다 :

myHostComponent.setStyle('myImageColor',0x000000); 

을 그리고 당신은 같은 피부에 사용할 수 있습니다 :

this.getStyle('myImageColor'); 

내가 생각 -하지만 확실하지 않다 - 당신 메타 데이터가 선언되지 않은 경우에도 CSS를 통해 스타일을 설정할 수 있습니다. Spark Component lifeCycle을 사용하면 구성 요소가 스타일을 초기화하기 전에 스타일을 완벽하게 설정할 수 있어야합니다.

+1

아, 문제는 초기에 hostComponent에 액세스하고 있다는 것이 었습니다. 나는 getBorderClassForCurrentState()에서 그것을 수행해야한다.스타일에 관해서는, 어쨌든 버튼을 서브 클래스화할 필요가 있기 때문에, 스타일보다는 속성을하는 것이 더 합리적이라고 생각합니다. 모르겠지만, 뭔가 읽고 쓰는 스타일이 더 비쌉니다. – Ska