спасибо, действительно этот код работает, можно подставить свой битмап скин
единственное хотелось бы еще отключать includeInLayout для скина, то есть чтоб в Layout учитывались только габариты hitArea, без остальных выступающих частей.
добавляем в скин изображение кнопки, например так:
Код AS3:
<s:Group id="buttonGraphicArea">
<s:BitmapImage source="{hostComponent.getStyle('upSkin')}" includeIn="up, disabled" />
<s:BitmapImage source="{hostComponent.getStyle('overSkin')}" includeIn="over" />
<s:BitmapImage source="{hostComponent.getStyle('downSkin')}" includeIn="down" />
</s:Group>
а в HitAreaButton дописываем:
Код AS3:
[SkinPart(required="true")]
public var buttonGraphicArea:IVisualElement;
...
override protected function partAdded(partName:String, instance:Object):void
{
super.partAdded(partName, instance);
if (instance == buttonHitArea)
{
Sprite(buttonHitArea).mouseEnabled = false;
hitArea = Sprite(buttonHitArea);
} else if (instance == buttonGraphicArea)
{
buttonGraphicArea.includeInLayout = false;
}
}
при этом у нас labelDisplay уменьшаяется по минимуму, из-за того что у него теперь нет фона, и как корректно лэйбл теперь растянуть не понятно + еще надо как то сам GraphicArea растянуть горизонтально под текст если он вдруг длинный