【发布时间】: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事件,这是让我感到困惑的问题。
-
从头开始构建新渲染后,我发现问题是由单击按钮内的按钮时调度的事件引起的。在我阻止事件语句后,它可以正常工作。