我正在通过加速度计移动HSlider拇指。以下代码正常工作。但问题是,随着我不断倾斜设备,xSpeed继续增加。这意味着,当我现在以另一种方式倾斜它时,拇指不会移动一段时间 - 因为取决于我在这个初始方向上握持了多久,xSpeed一直在上升。通过加速度计约束HSlider拇指的移动
所以这个工作,但与上述缺陷:
private function readAcc(e:AccelerometerEvent):void
{
xSpeed -= e.accelerationX * 4;
myHSlider.dispatchEvent(new FlexEvent("valueCommit"));
myHSlider.value += xSpeed;
}
但我想要做的就是停止递增xSpeed一旦hSlider.value ==最小或最大。听起来很简单,但是当我把if语句,它们防止在所有移动拇指:
private function readA(e:AccelerometerEvent):void
{
if(h.minimum < h.value && h.maximum > h.value)
{
xSpeed -= e.accelerationX * 4;
h.dispatchEvent(new FlexEvent("valueCommit"));
h.value += xSpeed;
var lastSpeed:Number = xSpeed;
}
else if (h.value == h.minimum || h.value == h.maximum)
{
xSpeed = lastSpeed;
h.dispatchEvent(new FlexEvent("valueCommit"));
h.value += xSpeed;
}
}
应该采取什么逻辑是使这项工作?
谢谢。
第一次调用这个函数时,h.value的值是多少? – shanethehat
你应该跟踪所有的值,以了解正在发生什么 –
...我会将var lastSpeed的声明移到if语句之外...... –