我已经使用自定义itemrenderer来构建所需的程序。
在itemrenderer中它看起来像这样。
当用户将鼠标移到特定项目渲染器上时,我用它来处理calse效果。
<s:postLayoutTransformOffsets>
<mx:TransformOffsets id="offsets" x.hovered="-10" y.hovered="-15" scaleX.hovered="1.2" scaleY.hovered="1.2" />
</s:postLayoutTransformOffsets>
<s:transitions>
<mx:Transition fromState="normal" toState="hovered" autoReverse="true">
<s:Animate target="{offsets}" duration="200">
<s:SimpleMotionPath property="scaleX" />
<s:SimpleMotionPath property="scaleY" />
<s:SimpleMotionPath property="x" />
<s:SimpleMotionPath property="y" />
</s:Animate>
</mx:Transition>
<mx:Transition fromState="hovered" toState="normal" autoReverse="true">
<s:Animate target="{offsets}" duration="200">
<s:SimpleMotionPath property="scaleX" />
<s:SimpleMotionPath property="scaleY" />
<s:SimpleMotionPath property="x" />
<s:SimpleMotionPath property="y" />
</s:Animate>
</mx:Transition>
</s:transitions>
之后是脚本部分处理渲染器的事件或逻辑。
对于每个渲染,渲染器中都包含按钮,只有当用户在渲染器上移动鼠标时才会显示,每个按钮都可以触发一个事件来处理。
最后一部分代码是关于渲染器中的容器。 首先是一个有&#34; rollOver&#34;和&#34; rollOut&#34;事件,当用户rollOver一个按钮并单击它时,事件将被执行。与rollOut相同。 在组内部,有一个图像与将在渲染器中显示的图片绑定。 Hgroup包含用户点击它时要执行的事件的按钮。
我遇到的问题是: 1.状态是不可控的,当用户将鼠标移动到渲染上并执行单击时,其他itemrenderer也会执行缩放。 sates问题,我已经覆盖了getcurrentstates方法来修复它,但是有效 2.修复后,itemrenderer表示问题,我发现没有被用户点击的其他itemrender也可以执行rollOver事件,这是非常有线的。
我不确定这个问题是否也与itemrenderer的状态有关,或者是关于我不知道的其他事情。
希望有人可以帮我找到一些线索和解决方案,或者只是提供一些有用的建议。
欢呼声。
答案 0 :(得分:1)
这是因为项目渲染器正在重复用于列表中的其他项目,并且在重用时,它们会保持以前的状态。
如果要重复使用,则应将项目的状态设置为默认值。通过覆盖“设置数据”功能来做到这一点,但是你必须禁用转换,否则它们也会被播放。