Un skin no existe en el scope del hostComponent, por lo menos no de la forma que lo estas haciendo. Se aplica y listo. Si lo que quieres es poder cambiar los fondos de la aplicación, decláralo en la aplicación misma.
Para usar skin tenes que basarte en un componente, por ejemplo supongamos que quiero hacer un skin de un dropdown, voy a File->New->MXML Skin y en create as a copy of pongo el componente base. Esto es porque los skins necesitan cumplir con ciertas reglas del layout que sino ser[ia muy dif[icil escribir desde cero.
Para hacer un skin de una aplicación, se suele separar en componentes, por ejemplo
aquí un skin de un proyecto grande, quito la ruta delas clases y otras cosas porque no estoy seguro que a mi cliente le guste encontrarse esto:
Código ActionScript :
package com.siliconpublishing.view.document.implementations
{
import ...... un monton de clases de mi proyecto
import spark.components.BorderContainer;
import spark.components.Group;
public class AppMain extends BorderContainer {
[SkinPart(required="false", type="myDomain.DocumentView")]
public var docView:DocumentView;
[SkinPart(required="false", type="myDomain.ZoomControls")]
public var zoomControls:ZoomControls;
[SkinPart(required="false", type="myDomain.PageNavControls")]
public var pageNavControls:PageNavControls;
( ...)
[SkinPart(required="false", type="spark.components.Group")]
public var handleLayer:Group;
[SkinPart(required="false", type="myDomain.View3DComponent")]
public var view3DComponent:Resizable3DView;
override protected function partAdded(partName:String, instance:Object):void
{
super.partAdded(partName, instance);
}
}
}
Mira que ya el skin parte de BorderContainer y declara todos los componentes que a su vez tienen su skin.
En sintesis, el mecanismo de skin es muy completo, pero tiene una complejidad que no amerita simplemente cambiar una imagen de fondo
Jorge