Coco2dx 3.10 PageView 中addEventListenerPageView函数不起作用的解决方法

上周在使用Cocos2dx 3.10游戏引擎的时候发现一个问题,pageView中的addEventListenerPageView函数怎么也监听不到,因为我想在滑动的时候监听到当前的是第几个page。在网上搜了好多博客,整理了一下今天分享给大家~~


首先看cocos/ui/UIPageView.cpp中的addEventListener函数

原函数是这样实现的:

void PageView::addEventListener(const ccPageViewCallback& callback){
    _eventCallback = callback;
}

//修改如下:
void PageView::addEventListener_pageView(const ccPageViewCallback& callback)
{
    _eventCallback = callback;

	ccScrollViewCallBack scrollViewCallback = [=] (Ref* ref, ScrollView::EventType type)->void{
		if (type == ScrollView::EventType::AUTOSCROLL_ENDED)
		{
			callback(ref, PageView::EventType::TURNING);
		}
		
	};
	this->addEventListener(scrollViewCallback);
}

注: 函数名为自己定义


其次在cocos/ui/UIPageView.h中

修改如下:

将原来的addEventListener函数注释掉,修改为addEventListener_pageView函数,参数不变,然后紧接着在下面写上这两句:

CC_DEPRECATED_ATTRIBUTE void addEventListener(const ccPageViewCallback& callback);

using ScrollView::addEventListener;


在cocos/ui/UIScrollView.cpp的538行中加入如下代码:

//在scrollVeiw的processAutoScrolling函数中末尾判断句 if(reachedEnd)中修改如下:
// Finish auto scroll if it ended
    if(reachedEnd)
    {
        _autoScrolling = false;
		//------add
	dispatchEvent(SCROLLVIEW_EVENT_AUTOSCROLL_ENDED, EventType::AUTOSCROLL_ENDED);
    }


在cocos/ui/UIScrollView.h的ScrollviewEventType的结构体最后加入:

SCROLLVIEW_EVENT_AUTOSCROLL_ENED

在.h的枚举类EventType中加入:

AUTOSCROLL_ENDED


至此,在游戏中调用addEventListener_pageView函数就能成功监听到滑动到第几个page了。





  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值