Webサイトのページにカバーフローレイアウトを使用しようとしています。つまり、リスト内の各アイテムは画像やパネルではなく、ページ全体です。ページは基本的にカスタムコンポーネントです。
私が欲しいのは、実行時にItemRenderer内でカスタムコンポーネントのインスタンスを作成できるようにすることです。たとえば、これはCoverflowレイアウトを表示するためのコードです。
<s:List id="pageList" depth="0" itemRenderer="com.helpdesk.proj.renderers.pageRenderer"
dataProvider="{menuItems}" selectedIndex="{navigationButtonGroup.selectedIndex}" borderVisible="false"
x="5" y="200" width="100%" height="500">
<s:layout>
<layouts:CoverFlowLayout id="hdCoverflow"
horizontalDistance="85"
selectedItemProximity="50"
selectedIndex="{pageList.selectedIndex}"
depthDistance="1"
elementRotation="-70"
focalLength="300"
perspectiveProjectionX="-1"
perspectiveProjectionY="-1"/>
</s:layout>
</s:List>
リストのデータプロバイダーは、基本的に、上部のナビゲーションバーの名前(文字列)を含むオブジェクトの配列です(ホーム、アバウト、お問い合わせなど)。同じ名前のカスタムコンポーネントを作成しました。つまり、「home」、「about」などの名前のカスタムコンポーネントがあります。
したがって、アイテムレンダラーで、適切なカスタムコンポーネントのインスタンスを作成します。これまでのところ、これは私が持っているものです:
<?xml version="1.0" encoding="utf-8"?>
import mx.core.UIComponent;
import mx.events.FlexEvent;
[Bindable]private var currItem:String = data.name;
protected function itemrenderer1_creationCompleteHandler(event:FlexEvent):void
{
var myClass:Class = Class(getDefinitionByName(currItem));
var mycomp:Object = new myClass();
}
]]>
</fx:Script>
「mycomp」が現在のカスタムコンポーネントのインスタンスを保持することを望んでいます。このオブジェクトをアプリケーションに追加するにはどうすればよいですか?parentDocument.addChildを試しましたが、エラーがスローされます。すべてを行う他の方法はありますか?