어떻게 스킨을 확장하고 새 호스트 구성 요소를 제공합니까?
왜해야합니까? 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을 사용하면 구성 요소가 스타일을 초기화하기 전에 스타일을 완벽하게 설정할 수 있어야합니다.
나는 그렇게 생각하지 않는다. 또한, 왜 ImageButton을 만들고 싶습니까? 스파크 버튼에는 이미지를 줄 수있는 '아이콘'스타일이 있습니다. – RIAstar
와우, 멋지다. 따라서 스킨을 확장 할 수는 있지만 부모 스킨이 지정한 구성 요소에만 사용할 수 있습니다. ImageButton 왜냐하면 전체 아이콘이 아이콘뿐만 아니라 이미지 배경을 가지기를 원하기 때문입니다. IT 부서는 대개 텍스트가 없어도됩니다. – Ska
아하, 그 경우에는 속성 대신 커스텀 버튼의 스타일로 만들 것입니다. 그런 식으로'getStyle()'메소드를 통해 스킨에서 접근 할 수 있으며'hostComponent'를 오버라이드 할 필요가 없습니다. – RIAstar