Я перемещаю большой палец HSlider через акселерометр. Следующий код работает нормально. Проблема, однако, в том, что, поскольку я продолжаю наклонять устройство, xSpeed продолжает увеличиваться. Это означает, что когда я теперь наклоняю его в другую сторону, большой палец некоторое время не двигается - поскольку, в зависимости от того, как долго я держал, наклонен в этом начальном направлении, xSpeed поднимался и поднимался.
Так что это работает, но с вышеупомянутым недостатком:
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;
}
}
Какой должна быть логика, чтобы заставить это работать?
Спасибо.