パフォーマンス上の理由から itemRendererFunction を避けるべきだとどこかで聞いたり読んだりしたことがありますが、そのコメントのソースが見つからないということは、代わりに非効率的なドキュメントのサンプルコードである可能性がありますか? はるかに効率的だと思われる別のコード例を作成しました (テストは行っていません)。
ドキュメントのコード例を次に示します。各反復で、新しいクラス ファクトリが作成されることに注意してください[1]。
<fx:Script>
<![CDATA[
import myComponents.MySimpleItemRendererFunction;
import spark.skins.spark.DefaultItemRenderer;
private function selectRenderer(item:Object):ClassFactory {
var classFactory:ClassFactory;
if (item is String) {
// If the item is a String, use DefaultItemRenderer.
classFactory = new ClassFactory(DefaultItemRenderer);
}
else {
// If the item is an Object, use MySimpleItemRendererFunction.
classFactory = new ClassFactory(MySimpleItemRendererFunction);
}
return classFactory;
}
]]>
</fx:Script>
私のコード(テストされていません):
<fx:Script>
<![CDATA[
private var normalItemRendererFactory:ClassFactory = new ClassFactory(DefaultItemRenderer);
private var editableItemRendererFactory:ClassFactory = new ClassFactory(EditableItemRenderer);
private function itemRendererFunction(item:Object):ClassFactory {
if (item is String) {
// If the item is a String, use DefaultItemRenderer.
return normalItemRendererFactory;
}
else {
// If the item is an Object, use MySimpleItemRendererFunction.
return editableItemRendererFactory;
}
}
]]>
</fx:Script>