gpt4 book ai didi

javascript - 将 webOS Slider 小部件对齐到整数

转载 作者:行者123 更新时间:2023-11-29 10:53:17 25 4
gpt4 key购买 nike

在 webOS 应用程序中,我有一个 Mojo.Widget.Slider,我用它来将整数设置为 0、1 或 2。我已经自己处理了 Slider 值的舍入(尽管有一个功能可以为你做这个,但我停止使用它以防这是我的问题的根源,但事实并非如此),但我希望 Slider 在用户完成后捕捉到四舍五入的整数位置滑动。据我所知,没有内置的东西可以做到这一点,所以我必须自己做。我认为像下面这样的东西会起作用。

在我的场景助手的设置函数中:

this.mySliderModel = {value: 1};
this.controller.setupWidget('mySlider', {minValue: 0, maxValue: 2}, this.mySliderModel

并监听 slider 的变化:

this.mySliderChangedEventListener = this.mySliderChanged.bindAsEventListener(this);
Mojo.Event.listen(this.controller.get("mySlider"), Mojo.Event.propertyChange, this.mySliderChangedEventListener);

然后是监听器:

MainAssistant.prototype.mySliderChanged = function(event) {
var sliderValue = Math.round(event.value);
switch (sliderValue) {
case 0:
case 1:
case 2:
//it's a good value
//do some stuff

this.mySliderModel.value = sliderValue;
this.controller.modelChanged(this.mySliderModel);
break;
default:
Mojo.Log.info("mySlider error value: ", event.value);
break;
}
};

但是更改模型和调用 modelChanged 似乎没有任何作用,尽管文档和示例代码表明这可以工作。知道为什么我的代码不起作用以及我可以做些什么来达到预期的效果吗?

注意:我知道我可以使用不同的小部件来实现此类目的,但我想使用 Slider 来实现。如果我无法找到使它正常工作的方法,则使用其他东西是我的后备。

最佳答案

问题似乎是检查小部件的 handleModelUpdate。有一个标志 (this.seeking) 可以防止小部件在拖动过程中处理模型更改。当“放置”发生在小部件上时,该标志被清除,但在标志被清除之前 2 行触发了 propertyChange 事件。

解决方案可以像添加一个非常短的超时一样简单,这样当前的脚本执行可以在您再次更新模型之前完成。

MainAssistant.prototype.mySliderChanged = function(event) {
var sliderValue = Math.round(event.value);
switch (sliderValue) {
case 0:
case 1:
case 2:
//it's a good value
//do some stuff
setTimeout(function() {
this.mySliderModel.value = sliderValue;
this.controller.modelChanged(this.mySliderModel);
}.bind(this), 100);
break;
default:
Mojo.Log.info("mySlider error value: ", event.value);
break;
}
};

关于javascript - 将 webOS Slider 小部件对齐到整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5690584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com