アイコンの上にラベルとメッセージを表示するカスタムを作成しましIconItemRenderer
た(私の場合は大きな画像です)。画像の読み込み中にラベルとメッセージの両方を非表示にしたい。そのため、デフォルトでそれらを非表示にしました。そして、画像が読み込まれると、それらが表示されるようにします。
override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
{
super.layoutContents(unscaledWidth, unscaledHeight);
setElementPosition(busyIndicator, (this.width - iconDisplay.width) / 2, (this.height - Dimensions.BUSY_INDICATOR_EDGE_LENGTH) / 2);
setElementPosition(iconDisplay, (this.width - iconDisplay.width) / 2, 0);
setElementPosition(labelDisplay, iconDisplay.x + 20, iconDisplay.y + iconDisplay.height / 4);
setElementPosition(textFieldProductNumber, iconDisplay.x + 20, labelDisplay.y + labelDisplay.height + 10);
setElementPosition(messageDisplay, iconDisplay.x + 20, textFieldProductNumber.y + textFieldProductNumber.height);
setElementSize(busyIndicator, Dimensions.BUSY_INDICATOR_EDGE_LENGTH, Dimensions.BUSY_INDICATOR_EDGE_LENGTH);
setElementSize(textFieldProductNumber, labelDisplay.width, labelDisplay.height / 2);
iconDisplay.addEventListener(Event.COMPLETE, onIconComplete);
if(!isIconComplete)
{
busyIndicator.visible = true;
iconDisplay.visible = false;
labelDisplay.visible = false;
textFieldProductNumber.visible = false;
messageDisplay.visible = false;
}
}
protected function onIconComplete(event:Event):void
{
busyIndicator.visible = false;
iconDisplay.visible = true;
labelDisplay.visible = true;
textFieldProductNumber.visible = true;
messageDisplay.visible = true;
isIconComplete = true;
iconDisplay.removeEventListener(Event.COMPLETE, onIconComplete);
invalidateDisplayList();
}
すべて正常に動作しますが、別のビューをプッシュしNavigator
て、IconItemRendererがあるビューに戻ると、システムは別のIconItemRendererインスタンスを作成し、ラベル、メッセージ、または画像は表示されません(デフォルト値のため)。
では、以前のクレートされたIconItemRenderer
インスタンスをどのように使用できますか?
または、単一のインスタンス(シングル トーンなど)を使用することは可能ですか?IconItemRenderer
または、アイテム内のデータがすでに存在することを示すものはありますか?Event
Dispathcer