我有一个简单滑块,只有3个选项。我觉得奇怪,强迫用户拖动滑块上的小缩略图,当那将是一个更容易通过滑块的侧点击3个实际标签之一。有谁知道如何做到这一点?

有帮助吗?

解决方案

这是一个凉爽问题。

由滑块所使用的标签对象原来是标签的一个子类(称为为sliderLabel)。所以,可能是最好的办法是继承滑块和事件侦听器添加标签。

我想你可以成功地添加事件侦听器无论是在方法的commitProperties或方法的updateDisplayList。我不知道,如果一个最好将其他,但的commitProperties好像更多的正确的选择。

所以,在你的滑块子类:

override protected function commitProperties():void
{
    super.commitProperties();

    for(var i:int = 0; i < labelObjects.numChildren; i++)
    {
        if(!SliderLabel(labelObjects.getChildAt(i)).hasEventListener(MouseEvent.CLICK))
        {
            SliderLabel(labelObjects.getChildAt(i)).addEventListener(MouseEvent.CLICK,sliderLabelClickListener);
        }
    }
}

,然后也许是这样的用于sliderLabelClickListener

private function sliderLabelClickListener(e:MouseEvent):void
{
    dispatchEvent( new SliderLabelClickEvent(e.target) );
}

我想你会希望有一个自定义事件出现,而不是派遣一个普通Event,所以你可以包括标签的名称/ ID /值。

此外,可能要放在一个“处置”的方法,当滑块被从阶段除去以从标签移除CLICK事件侦听器。这不,如果你不打算在去除滑块的一个问题,但如果你是,我通常做的是创建一个名为dispose方法,把我所有的手工清除逻辑存在(删除事件侦听器,unwatching /删除ChangeWatchers)。然后我分配的侦听到组件的REMOVED_FROM_STAGE事件并调用从听者dispose方法。

其他提示

您确定滑块在这种情况下使用最好的成分?一般而言,滑块是当用户有一个大范围的连续可供选择的方案,其中用户的选择的精度并不重要使用(如音量滑块 - 具有51%的体积,而不是50%真的不会有太大的差别)。

如果你只有三个选项,并且用户仅被允许选择的这三个选项中的一个,我建议使用任一组合框或单选按钮组。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top