I get the textures this way:
public static function createRoundedSkin(diameter:Number = 15, color:uint = 0xffffff):ImageSkin
{
var skin:ImageSkin = new ImageSkin(RoundedRect.createTexture(diameter));
skin.width = skin.height = diameter;
skin.textureSmoothing = TextureSmoothing.TRILINEAR;
skin.defaultColor = color;
_assets.addEventListener(Event.TEXTURES_RESTORED, function (event:Event):void
{
Starling.juggler.delayCall(function ():void
{
skin.defaultTexture = RoundedRect.createTexture(diameter);
}, 0.1);
});
return skin;
}
public static function createTexture(diameter:Number = 5, color:Number = 0xFFFFFF, outTexture:RenderTexture = null):RenderTexture
{
var textureName:String = 'createTexture' + String(diameter) + String(color);
if (!_assets.getTexture(textureName))
{
var canvas:Canvas = createCanvas(diameter, color);
outTexture = new RenderTexture(canvas.width + 1, canvas.height + 1);
outTexture.draw(canvas, null, 1, 8);
canvas.dispose();
canvas = null;
_assets.addEventListener(Event.TEXTURES_RESTORED, restored)
function restored():void
{
_assets.removeAsset(AssetType.TEXTURE, textureName);
_assets.removeEventListener(Event.TEXTURES_RESTORED, restored)
outTexture.clear();
}
_assets.addAsset(textureName, outTexture, AssetType.TEXTURE);
}
else
{
outTexture = _assets.getTexture(textureName) as RenderTexture;
}
return outTexture;
}
If the texture disappears, I clean it and when the asset manager realizes that the structure is missing, the function creates it
I have no problem on Air 33