Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex Slider:如何区分编程更改和用户更改_Apache Flex_Slider - Fatal编程技术网

Apache flex Flex Slider:如何区分编程更改和用户更改

Apache flex Flex Slider:如何区分编程更改和用户更改,apache-flex,slider,Apache Flex,Slider,我正在使用HSlider实现一个单拇指滑块控件。拇指位置由计时器更新。但是,用户也可以通过单击滑块轨迹中的位置或拖动拇指来更新拇指位置 根据Flex文档判断,我认为我所需要做的就是为变更事件编写一个处理程序。他们说: 更改事件对象类型: mx.events.slideEvent属性 SlideEvent.type= mx.events.slideEvent.CHANGE 滑块更改时发送 由于鼠标或键盘导致的值 互动 我编写的代码如下: <mx:HSlider thumbPress=&quo

我正在使用HSlider实现一个单拇指滑块控件。拇指位置由计时器更新。但是,用户也可以通过单击滑块轨迹中的位置或拖动拇指来更新拇指位置

根据Flex文档判断,我认为我所需要做的就是为变更事件编写一个处理程序。他们说:

更改事件对象类型: mx.events.slideEvent属性 SlideEvent.type= mx.events.slideEvent.CHANGE

滑块更改时发送 由于鼠标或键盘导致的值 互动

我编写的代码如下:

<mx:HSlider thumbPress="handleThumbPress(event)" change="handleUserChange(event)"
    showTrackHighlight="true" buttonMode="true" useHandCursor="true" minimum="0" 
    maximum="{_max}" snapInterval="1" enabled="true" width="100%" id="mySlider"
    liveDragging="false" showDataTip="true" verticalCenter="0" horizontalCenter="0" 
    trackSkin="{SliderTrack}" trackHighlightSkin="{TrackHighlightConfigurable}"
    sliderThumbClass="{MySliderThumb}" thumbSkin="@Embed('../imgempty.png')"
    dataTipFormatFunction="dataToolTipFormat"/>
我是不是犯了一个明显的错误?有没有更好的方法来区分用户和Flex滑块的编程更改

谢谢


-Raj

当以编程方式设置值时,您可以只放置布尔换行:

private var inputByUser:Boolean = false;
private function updateValue( newValue : Number ) : void
{
    if (!inputByUser)
        mySlider.value = newValue;
}
我不知道你的确切代码,所以我无法显式地解决它,但我会做一些类似的事情。您可以在更改处理程序中设置
inputByUser
,如下所示:

private function changeHandler() : void
{
    inputByUser = true;
    updateValue(mySlider.value + 10); // however you're doing it
    inputByUser = false;
}
希望有帮助,
如果以编程方式更改值,则不会触发更改事件。当更改thumb的值超过滑块的最小值或最大值时,将触发事件。如果更改滑块的最小值或最大值,事件也会被激发。您的代码中是否发生了这种情况

兰斯,这是一个很好的解决办法。你不认为这是HSlider中的一个bug,它调用我的更改处理程序来进行非编程更改吗?谢谢你的回复-RajI真的说不出来,试着把你所有的代码都贴出来让我看看。我怀疑这是一个bug,因为无论何时在滑块上设置值,它都将发送一个更改事件,该事件将在其上运行任何事件处理程序。当您以编程方式更改数据提供程序时,似乎会调用更改,这可能解释了这一点。
private function changeHandler() : void
{
    inputByUser = true;
    updateValue(mySlider.value + 10); // however you're doing it
    inputByUser = false;
}