ItemRenderer和ActionScript函数Flex

时间:2011-06-22 19:21:20

标签: flex actionscript itemrenderer

好吧,可能是我上次的弹性问题:)

得到了这个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> 

但我无法访问script / control.as中的否定 selectAkw()

任何人都有线索?

1 个答案:

答案 0 :(得分:1)

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

所以将属性添加到itemRenderer

[Bindable]
private var negate:int = 0;

现在在调用它的组件中(在CreationComplete中这样做我猜)

var irFactory:ClassFactory = new ClassFactory(YourItemRenderer);
irFactory.properties = {negate:negate};
yourComponent.itemRenderer = irFactory;

您也可以将其作为ItemRendererFunction

欺骗性的方法是{FlexGlobals.topLevelApplication.negate},假设您的主Application MXML文件中可以访问否定。

对于您的活动,只需在点击时发送新事件并将其捕获到组件所在的位置,然后从那里调用SelectAKW()功能。

click="{dispatchEvent(new Event("selectThatAKW"))}"

然后在creationComplete中的父组件:

 yourComponent.addEventListener("selectThatAKW",selectAkw)