You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cocos2d v4.0中PageView无addEventListenerPageView,如何实现页面滚动代理?

在Cocos2d-x v4.0中实现PageView滚动事件监听的替代方案

在Cocos2d-x v4.0里,旧的addEventListenerPageView和基于selector的事件绑定方式已经被移除,取而代之的是基于std::function的通用事件监听系统。下面是适配你原有代码的两种实现方式:

方式1:使用Lambda表达式(推荐,代码更紧凑)

直接在PageView初始化时用lambda处理事件,无需额外调整成员函数:

// 替换你原来的pageView->addEventListenerPageView(...)这一行
pageView->addEventListener([this](EventCustom* event) {
    // 从事件中获取PageView的事件数据
    auto pageViewEvent = static_cast<PageViewEvent*>(event->getUserData());
    PageView* pageView = static_cast<PageView*>(pageViewEvent->getTarget());
    
    switch (pageViewEvent->getType()) {
        case PageView::EventType::TURNING: {
            _displayValueLabel->setString(StringUtils::format("page = %ld", static_cast<long>(pageView->getCurrentPageIndex() + 1)));
        } break;
        // 你可以在这里处理其他PageView事件,比如BEGIN_DRAG、END_DRAG等
        default:
            break;
    }
});

方式2:绑定到类成员函数(保留原有函数结构)

如果你想继续使用类成员函数处理事件,需要先调整函数的参数签名,再通过std::bind绑定:

1. 修改事件处理函数的参数

把原来的pageViewEvent函数改成以下形式:

void GBMapScreen::pageViewEvent(EventCustom* event) {
    auto pageViewEvent = static_cast<PageViewEvent*>(event->getUserData());
    PageView* pageView = static_cast<PageView*>(pageViewEvent->getTarget());
    
    switch (pageViewEvent->getType()) {
        case PageView::EventType::TURNING: {
            _displayValueLabel->setString(StringUtils::format("page = %ld", static_cast<long>(pageView->getCurrentPageIndex() + 1)));
        } break;
        default:
            break;
    }
}

2. 绑定事件监听

替换原来的addEventListenerPageView调用为:

#include <functional> // 需要包含这个头文件来使用std::bind

// ...

pageView->addEventListener(std::bind(&GBMapScreen::pageViewEvent, this, std::placeholders::_1));

关键说明

  • v4中所有UI组件的事件都统一通过addEventListener方法绑定,事件数据通过EventCustom::getUserData()获取,类型为对应组件的Event类(这里是PageViewEvent)。
  • PageView::EventType替代了旧的PageViewEventType,可用的事件类型和v3基本一致,比如TURNING(页面切换完成)、BEGIN_DRAG(开始拖拽)、END_DRAG(结束拖拽)等。

内容的提问来源于stack exchange,提问作者Guru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 22:37:52