我正在使用Flash Builder Burrito为ANDROID设备开发应用程序,但我无法弄清楚如何完成应用程序的某个方面。
我在Scroller中有一个HGroup。 HGroup的图像宽度为400px,每个HGroup列的宽度设置为400px。虽然项目数是动态的,但假设我在HGroup中有10个图像。 Scroller和Viewport的宽度设置为400px。
到目前为止,用户可以在滚动条中看到单个图像。然后,用户可以使用触摸或鼠标向左或向右滚动并查看每个图像。但是这就是我被困住的地方。我想这样做,以便当用户STOPS滚动滚动条时,然后将图像“捕捉”到视图中。换句话说,我不希望视口中的一半图像和另一半图像的一半。
看起来很简单,但我无法理解。部分问题是似乎没有用于此目的的事件。我知道我可以挂钩到PropertyChangeEvent.PROPERTY_CHANGE或MouseEvent.MOUSE_UP / TouchEvent.TOUCH_END(这就是我现在正在做的事情),但那个事件并不能真正满足我的需求。
我真的需要一个事件,当用户将鼠标作为滚动的一部分释放时触发,或者将手指从设备上抬起作为滚动的一部分。 然后我需要等待滚动停止 。例如,如果我执行非常快速的滑动,我需要等待滚动条停止或几乎停止,然后执行快照。一旦我松开鼠标或将手指从平板电脑上移开,事件就会触发,所以如果我改变水平滚动位置,那么它会被“减速滚动条”所覆盖。
顺便说一句,我知道我可以使用模数逻辑来显示每个图像“整体”。那不是我被困的地方 - 我被困在哪个事件用来知道什么时候执行这个mod逻辑。
请注意,如果我慢慢滚动然后放开鼠标,我已经开发的功能就可以了。只有当你滑得更快时它才会停止工作。
这是我的部分工作代码:
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;
}
提前致谢!
答案 0 :(得分:0)
Multitouch.inputMode = MultitouchInputMode.GESTURE;
然后收听gesturePan和/或gestureSwipe事件。
答案 1 :(得分:0)
在用户释放手指并且滚动动画停止后,将调度touchInteractionEnd事件。当我的页面捕捉随机破坏并需要手动捕捉到某个页面时,我遇到了这个问题。