Пиша инструмент във Flex, който ми позволява да проектирам съставни спрайтове, използвайки наслоени растерни изображения и след това да ги „изпича“ в единични bitmapData с ниска режийна стойност. Открих странно поведение, което не мога да обясня: превключването на свойството „видимо“ на моите слоеве работи два пъти за всеки слой (т.е. мога да го изключа, след това да го включа отново) и след това никога повече за този слой-- слой остава видим от този момент нататък.
Ако отменя „set 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 мога да проверя дали видимата стойност на слоя е "false".