itemrenderer有状态和翻转事件的问题

时间:2014-05-05 09:20:52

标签: flex itemrenderer

我已经使用自定义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的状态有关,或者是关于我不知道的其他事情。

希望有人可以帮我找到一些线索和解决方案,或者只是提供一些有用的建议。

欢呼声。

1 个答案:

答案 0 :(得分:1)

这是因为项目渲染器正在重复用于列表中的其他项目,并且在重用时,它们会保持以前的状态。

如果要重复使用,则应将项目的状态设置为默认值。通过覆盖“设置数据”功能来做到这一点,但是你必须禁用转换,否则它们也会被播放。