Actionscript 3 访问itemRenderer实例flash Builder 4

Actionscript 3 访问itemRenderer实例flash Builder 4,actionscript-3,itemrenderer,flash-builder,flex4,Actionscript 3,Itemrenderer,Flash Builder,Flex4,我的设置非常基本。我有一个带有自定义itemRenderer和dataprovider的s:List。我想做的是访问项目渲染器的生成实例,但我不知道如何访问 以下是列表的代码: <s:List id="layersList" borderVisible="false" allowMultipleSelection="true" contentBackgroundAlpha="0" it

我的设置非常基本。我有一个带有自定义itemRenderer和dataprovider的s:List。我想做的是访问项目渲染器的生成实例,但我不知道如何访问

以下是列表的代码:

<s:List id="layersList" 
            borderVisible="false"  
            allowMultipleSelection="true" 
            contentBackgroundAlpha="0" 
            itemRenderer="renderers.LayerRenderer" 
            dataProvider="{AssetsCollection}">
     <s:layout>
    <s:VerticalLayout gap="1"  />           
     </s:layout>
<s:list>

我希望访问生成的渲染器,如:

layersList.renders[selectedIndex]或layersList.selectedItems[0]。renderer
。以便访问它的一些内部对象。就像在事件中一样,我希望侦听从列表的父级在渲染器实例中调度的事件


有人能帮忙吗?

列表/项目渲染器的概念模型是,它们是数据提供程序中项目的表示。记住这一点的一个原因是,列表回收其ItemRenders以减少内存占用。这意味着您的dataProvider中可能有100个项目,但其中只有一小部分将有与之关联的ItemRenders,其中一些项目甚至可能在屏幕上不可见,甚至不再有效。有几种方法可以让列表中的ItemRenders反映列表父级的状态,而无需直接操作渲染器。例如,您可以这样做:

<s:List id="layersList" 
        borderVisible="false" 
        allowMultipleSelection="true" 
        dataProvider="{AssetsCollection}"
        contentBackgroundAlpha="0">
    <s:layout>
        <s:VerticalLayout gap="1" />      
    </s:layout>
    <s:itemRenderer>
        <fx:Component>
            <myrenderers:TestRenderer myState="{outerDocument.someState}"/>
        </fx:Component>
    </s:itemRenderer>
</s:List>


其中TestRenderer有一个名为myState的可绑定公共属性。列表的父级有一个称为“someState”的可绑定属性。然后在渲染器中,您可以根据myState的值设置一些条件逻辑。希望这能有所帮助。

人们可以开始回答你的问题,开始喋喋不休地谈论ClassFactory方法等。但我认为最好是你发布一些代码,让你清楚地了解你正在努力实现的目标。我已经添加了代码,谢谢。这不是我所希望的答案。但至少,我明白为什么,谢谢韦德。我有一个小问题要跟进。只有启用了虚拟布局,渲染器才会被回收吗?很好,useVirtualLayout默认设置为true。您可以关闭它,但不建议直接使用渲染器,我这样做的经验充其量也是有问题的。我同意,因为将它设置为false会破坏我的代码。出于好奇,将其设置为false是否可以访问渲染器?