Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex:在SkinnableDataContainer';s项目_Apache Flex_Flex4_Itemrenderer - Fatal编程技术网

Apache flex Flex:在SkinnableDataContainer';s项目

Apache flex Flex:在SkinnableDataContainer';s项目,apache-flex,flex4,itemrenderer,Apache Flex,Flex4,Itemrenderer,我是Flex的新手 我在这里寻找的是在SkinnableDataContainer创建的所有项目上添加一个单击处理程序。我尝试了一些不起作用的方法,但我不知道什么是正确的方法 <s:SkinnableDataContainer id="teamList" itemRenderer="TeamSummaryRenderer"> <s:dataProvider> <s:ArrayList>

我是Flex的新手

我在这里寻找的是在SkinnableDataContainer创建的所有项目上添加一个
单击
处理程序。我尝试了一些不起作用的方法,但我不知道什么是正确的方法

<s:SkinnableDataContainer id="teamList"
                          itemRenderer="TeamSummaryRenderer">
    <s:dataProvider>
        <s:ArrayList>
            <fx:Object teamName="A super team 1"/>
            <fx:Object teamName="A super team 2"/>
            <fx:Object teamName="A super team 3"/>
        </s:ArrayList>
    </s:dataProvider>
</s:SkinnableDataContainer>

此外,我不想在自定义
TeamSummaryRenderer
组件中声明处理程序。我更希望处理程序代码保持在应用程序级别

是否有一个简单的“Flex-ish”来实现这一点?

<s:SkinnableDataContainer
    Properties
    autoLayout="true"
    clipAndEnableScrolling="false"
    dataProvider="null"
    horizontalScrollPosition="null"
    itemRenderer="null"
    itemRendererFunction="null"
    layout="VerticalLayout"
    typicalItem="null"
    verticalScrollPosition="null"

    Events
    rendererAdd="No default"
    rendererRemove="No default"
  />


我认为您必须按照文档中的说明将处理程序保留在itemRenderer中。它们没有任何属性可以直接实现它。

好的。。。我自己找到了答案:

<s:SkinnableDataContainer
rendererAdd="my_handler(event)"/>

private function my_handler(event:RendererExistenceEvent):void{
    event.renderer.addEventListener(flash.events.MouseEvent.CLICK, clickhandler);
}

私有函数my_处理程序(事件:renderexistenceevent):void{
event.renderer.addEventListener(flash.events.MouseEvent.CLICK,clickhandler);
}

每次将新渲染器添加到容器中时,都会触发
rendererAdd
事件,该事件具有一个属性
renderer
,即渲染器对象本身。因此,这里是在创建的每个渲染器上添加单击处理程序的地方。

您还可以将SkinnableDataContainer子类化,并处理所有侦听的渲染器。然后,当触发eventhandler时,自定义SkinnableDataContainer将发送一个更改事件或其他事件。接下来,在您的应用程序中,您在该特定事件上设置了一个侦听器,然后您就可以…

crap。。。那太难看了,不是吗?