Я пишу инструмент на Flex, который позволяет мне создавать составные спрайты с использованием многослойных растровых изображений, а затем «запекать» их в единый bitmapData с низкими накладными расходами. Я обнаружил странное поведение, которое не могу объяснить: переключение свойства "visible" моих слоев работает дважды для каждого слоя (то есть я могу выключить его, а затем снова включить), а затем никогда больше для этого слоя - слой остается видимым с этого момента.
Если я переопределю "установить видимым" на слое как таковом:
override public function set visible(value:Boolean):void
{
if(value == false) this.alpha = 0;
else {this.alpha = 1;}
}
Проблема исчезнет, и я могу переключать "видимость" сколько захочу. Есть идеи, что может быть причиной этого?
Изменить:
Вот код, который выполняет вызов:
private function onVisibleChange():void
{
_layer.visible = layerVisible.selected;
changed();
}
Метод changed () "запекает" растровое изображение:
public function getBaked():BitmapData
{
var w:int = _composite.width + (_atmosphereOuterBlur * 2);
var h:int = _composite.height + (_atmosphereOuterBlur * 2);
var bmpData:BitmapData = new BitmapData(w,h,true,0x00000000);
var matrix:Matrix = new Matrix();
var bounds:Rectangle = this.getBounds(this);
matrix.translate(w/2,h/2);
bmpData.draw(this,matrix,null,null,new Rectangle(0,0,w,h),true);
return bmpData;
}
Между прочим, пока слой все еще виден, с помощью отладчика Flex я могу проверить, что видимое значение слоя «ложно».