Apache flex ItemRenderer和ActionScript函数Flex
好的,可能是我最后一个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
<?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的任何组件都需要有事件侦听器。