我正在尝试对我网站中的页面使用封面流布局,即列表中的每个项目都不是图像或面板,而是整个页面本身。这些页面本质上是自定义组件。
我想要的是能够在运行时在我的 ItemRenderer 中创建我的自定义组件的实例。例如,这是显示封面流布局的代码:
<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 但它抛出了一个错误。有没有其他方法可以做整个事情?