Apache flex ItemRenderer和ActionScript函数Flex

Apache flex ItemRenderer和ActionScript函数Flex,apache-flex,actionscript,itemrenderer,Apache Flex,Actionscript,Itemrenderer,好的,可能是我最后一个flex问题:) 有这个吗 <?xml version="1.0" encoding="utf-8"?> <s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" ve

好的,可能是我最后一个flex问题:)

有这个吗

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
                xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:mx="library://ns.adobe.com/flex/mx" verticalCenter="0" horizontalCenter="0" autoDrawBackground="false">


akwrenderer.mxml
    <s:Image source="{data.imgPath}"    verticalCenter="{data.y}" horizontalCenter="{data.x}"
             visible="{data.isShown}" scaleX="{negate}" scaleY="{negate}" click="selectAkw(event)" />
    <s:Ellipse  visible="{data.isShown}" height="{data.radiusDisp.height}" width="{data.radiusDisp.width}" 
                verticalCenter="{data.radiusDisp.y}" horizontalCenter="{data.radiusDisp.x}"
                alpha="0.5"   rotation="{data.radiusDisp.rotation}" bottom="0"
                transformY="{data.radiusDisp.transY}" >
        <s:fill>
            <s:RadialGradient>
                <s:entries>

<s:GradientEntry color="#006699" ratio="0.3" alpha="0.5"/>
                    <s:GradientEntry color="#006699" ratio="0.3" alpha="0.55"/>
                    <s:GradientEntry color="#006699" ratio="0.3" alpha="0.555"/>
                </s:entries>
            </s:RadialGradient>
        </s:fill>
    </s:Ellipse> 
</s:ItemRenderer> 
[Bindable]
private var negate:int = 0;

akwrender.mxml
但是我无法访问script/control.as中的否定选择akw()


有人有线索吗?

有几种方法可以做到这一点。在我看来,最好的方法是使用类工厂将参数传递给项目渲染器

因此,将属性添加到itemRenderer

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
                xmlns:s="library://ns.adobe.com/flex/spark"
                xmlns:mx="library://ns.adobe.com/flex/mx" verticalCenter="0" horizontalCenter="0" autoDrawBackground="false">


akwrenderer.mxml
    <s:Image source="{data.imgPath}"    verticalCenter="{data.y}" horizontalCenter="{data.x}"
             visible="{data.isShown}" scaleX="{negate}" scaleY="{negate}" click="selectAkw(event)" />
    <s:Ellipse  visible="{data.isShown}" height="{data.radiusDisp.height}" width="{data.radiusDisp.width}" 
                verticalCenter="{data.radiusDisp.y}" horizontalCenter="{data.radiusDisp.x}"
                alpha="0.5"   rotation="{data.radiusDisp.rotation}" bottom="0"
                transformY="{data.radiusDisp.transY}" >
        <s:fill>
            <s:RadialGradient>
                <s:entries>

<s:GradientEntry color="#006699" ratio="0.3" alpha="0.5"/>
                    <s:GradientEntry color="#006699" ratio="0.3" alpha="0.55"/>
                    <s:GradientEntry color="#006699" ratio="0.3" alpha="0.555"/>
                </s:entries>
            </s:RadialGradient>
        </s:fill>
    </s:Ellipse> 
</s:ItemRenderer> 
[Bindable]
private var negate:int = 0;
现在在调用它的组件中(我想在CreationComplete中执行此操作)

您还可以将其作为ItemRenderer函数来执行

作弊者的方法是
{FlexGlobals.topLevelApplication.negate}
假设在主应用程序MXML文件中可以访问negate

对于您的事件,只需在单击时发送一个新事件并将其捕获到组件所在的位置,然后从那里调用
SelectAKW()
函数

click="{dispatchEvent(new Event("selectThatAKW"))}"
然后在creationComplete中的父组件上:

 yourComponent.addEventListener("selectThatAKW",selectAkw)

akwrender.addEventListener(“selectThatAKW”,selectAkw);不行了:/为什么不行?它是否未捕获事件或无法访问selectAKW?没有更多的源代码就很难调试。哦!不,不要将eventListener添加到渲染器中,将其添加到组件中,但组件名为akwrender.mxmlNo,在您发布的代码中,它看起来像是项目渲染器。您需要以使用项目呈现器的组件为目标。它是数据网格吗?名单?使用akwrender的任何组件都需要有事件侦听器。