Я занимаюсь разработкой приложения для устройств ANDROID с использованием Flash Builder Burrito и не могу понять, как выполнить один из аспектов моего приложения.
У меня есть HGroup внутри Scroller.У HGroup есть изображения шириной 400px, а ширина каждого столбца HGroup равна 400px.Хотя количество элементов является динамическим, предположим, у меня есть 10 изображений в HGroup.Ширина Scroller и Viewport установлена на 400px.
Пока все хорошо - пользователь может видеть одно изображение внутри скроллера.Пользователь может затем прокрутить влево или вправо с помощью касания или мыши и увидеть каждое изображение.Но вот где я застрял.Я хочу сделать так, чтобы, когда пользователь останавливает прокрутку, то «привязывает» изображение к просмотру.Другими словами, я не хочу, чтобы половина одного изображения и половина другого изображения в области просмотра.
Кажется довольно простым, но я не могу понять это.Частично проблема заключается в том, что, похоже, нет события, которое можно было бы использовать для этой цели.Я знаю, что могу подключиться к PropertyChangeEvent.PROPERTY_CHANGE или MouseEvent.MOUSE_UP / TouchEvent.TOUCH_END (что я и делаю сейчас), но это событие не дает мне того, что мне нужно.
Мне действительно нужно событие, которое срабатывает, когда пользователь отпускает мышь как часть прокрутки или снимает палец с устройства как часть прокрутки. А потом мне нужно дождаться остановки свитка .Например, если я делаю действительно быстрое перелистывание, мне нужно дождаться остановки или почти остановки скроллера, прежде чем выполнить привязку.Событие запускается, как только я отпускаю мышь или убираю палец с планшета, поэтому, если я изменю положение горизонтальной прокрутки, оно перезаписывается «замедлением прокрутки».
ПоКстати, я знаю, что могу использовать модульную логику, чтобы показать каждое изображение «целым».Это не то, где я застрял - я застрял в том, какое событие использовать, чтобы знать, КОГДА выполнять эту логику мода.
Обратите внимание, что то, что я уже разработал, прекрасно работает, если я медленно прокручиваю, а затемотпусти мышь.Только когда вы скользите быстрее, он перестает работать.
Вот мой частично рабочий код:
private function onVehicleScrollerMouseUp(event:Event):void
{
snapScroller();
}
private function onVehicleScrollerTouchEnd(event:Event):void
{
snapScroller();
}
private function snapScroller():void
{
// If the user didn't stop at an interval of 400, snap to that interval now
var newScrollPosition:uint = vehicleScroller.viewport.horizontalScrollPosition as uint;
var modScrollPosition:uint = newScrollPosition % 400;
var snapScrollPosition:uint;
if (modScrollPosition == 0)
snapScrollPosition = newScrollPosition;
else
{
if (modScrollPosition <= 200)
snapScrollPosition = newScrollPosition - modScrollPosition;
else
snapScrollPosition = newScrollPosition - modScrollPosition + 400;
}
vehicleScroller.viewport.horizontalScrollPosition = snapScrollPosition as Number;
}
Заранее спасибо!