关于ScrollView或者tableview, 请问是否可以监听滚动停止事件?

大家好
我用的是最新的 cocos2dx 3.13.1
我需要做一个横向分页滚动的列表
因为数据量很大 所以pageview不太适合 需要一个一个加入page,
我感觉tableview的功能和模式是最适合的

最近考虑让这个分页可以逐页移动,
而且从体验上讲我不想取消惯性,所以无法依靠手指触摸来判断滑动是否停止

所以现在问题是无法获得滚动停止事件
导致我无法在滚动条滑动一段事件后, 对齐页面

请问有没有什么更好的解决方案或者如何获取停止事件?

1赞

而且我刚才翻源码发现一个很有趣的现象
tableview有一个 reload
pageview和listview貌似都没有?
pageview和listview是完全把数据管理交给了用户啊…
而且貌似pageview的监听事件里是没有前翻或者后翻的…

老哥解决了吗

  • ScrollView的 isScrolling() isAutoScrolling() 可以判断是否在滚动/惯性滚动
  • 在帧调度里面判断就行
  • 有没有事件,不清楚
/// 动态更新可视数据
/// 
/// ScrollView::onEnter触发
///     - scheduleUpdate();
void ListBox::update(float dt){
    ScrollView::update(dt);
    if(!isScrolling() && !isAutoScrolling()){ return; }//没有滚动,减少计算
/**
 * Scrollview scroll event type.
 */
enum class EventType
{
	SCROLL_TO_TOP,
	SCROLL_TO_BOTTOM,
	SCROLL_TO_LEFT,
	SCROLL_TO_RIGHT,
	SCROLLING,
	BOUNCE_TOP,
	BOUNCE_BOTTOM,
	BOUNCE_LEFT,
	BOUNCE_RIGHT,
	CONTAINER_MOVED,
	SCROLLING_BEGAN,
	SCROLLING_ENDED,
	AUTOSCROLL_ENDED
};

/**
 * A callback which would be called when a ScrollView is scrolling.
 */
typedef std::function<void(Ref*, EventType)> ccScrollViewCallback;
/**
 * Add callback function which will be called  when scrollview event triggered.
 * @param callback A callback function with type of `ccScrollViewCallback`.
 */
virtual void addEventListener(const ccScrollViewCallback& callback);