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