Выглядит симпотично, но есть одно но! Это не скинирование, это изменение стиля, кроме css в примере ничего нет. Захотим сделать что-то большее, чем изменение заливки и корнеррадиуса и приехали. Однако есть возможность скинировать компоненты картинками, пример из хелпа:
<mx:Style>
Button {
overSkin: Embed("../assets/images/orb_over_skin.gif");
upSkin: Embed("../assets/images/orb_up_skin.gif");
downSkin: Embed("../assets/images/orb_down_skin.gif");
}
</mx:Style>
Тут то и натыкаемся на знакомые грабли - не работает. Попробуйте наложить такой скин на ComboBox - накладывается, но как-то неестесвенно растягивается, устанавливаем размеры по размеру скина и опа, пропадает выбранный лэйбл...Возможно у меня кривые руки, возможно компоненты еще сырые, вот собсвенно код компонента:

Код:
package classes.ui
{
import mx.controls.ComboBox;
import flash.events.Event;
import mx.states.SetStyle;
import mx.events.FlexEvent;
public class SkinnedComboBox extends ComboBox
{
[Embed(source="../../CBSkins/up.png")]
private var upSkin:Class;
[Embed(source="../../CBSkins/over.png")]
private var overSkin:Class;
[Embed(source="../../CBSkins/down.png")]
private var downSkin:Class;
[Embed(source="../../CBSkins/disabled.png")]
private var disabledSkin:Class;
public function SkinnedComboBox(){
super();
addEventListener(FlexEvent.INITIALIZE, initSkin);
}
private function initSkin(evt : FlexEvent):void{
setStyle('upSkin', upSkin);
setStyle('overSkin', overSkin);
setStyle('downSkin', downSkin);
setStyle('disabledSkin', disabledSkin);
width = 112;
height = 22;
}
}
}