【问题标题】:The itemrenderer problems with states and rollover eventitemrenderer 的状态和翻转事件问题
【发布时间】:2014-06-21 13:06:42
【问题描述】:

我已经使用了一个自定义的 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>

之后是脚本部分与渲染器处理事件或逻辑。

对于每个渲染,渲染器中都必须包含按钮,并且只有当用户在渲染器上移动鼠标时才会显示,每个按钮都可以触发一个事件来处理。

最后一部分代码是关于渲染器中的容器。 首先是一个具有“rollOver”和“rollOut”事件的事件,当用户滚动一个按钮并单击它时,将执行该事件。与 rollOut 相同。 Group 内部有一个与将在渲染器中显示的图片绑定的图像。 一个 Hgroup 包含当用户点击它时执行事件的按钮。

我遇到的问题是: 1. 状态不可控,当用户将鼠标移到某个渲染上并点击时,其他itemrenderer也会进行缩放。状态问题,我已经覆盖了 getcurrentstates 方法来解决这个问题,但是 2. 修复itemrenderer 状态问题后,我发现其他没有被用户点击的itemrender 也可以执行rollOver 事件,这是相当连贯的。

我不确定这个问题是否也与 itemrenderer 的状态有关,还是与我不知道的其他问题有关。

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

干杯。

【问题讨论】:

  • 您可以再添加一个状态来处理这种情况:hoveredAndClicked
  • 试过了,对其他渲染状态有效是不正确的,但是在管理状态后仍然有问题:当我点击另一个渲染时,其他itemrenderer仍然可以执行rollOver事件,这是让我感到困惑的问题。
  • 从头开始构建新渲染后,我发现问题是由单击按钮内的按钮时调度的事件引起的。在我阻止事件语句后,它可以正常工作。

标签: apache-flex itemrenderer


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多