Cocos2d v 4.0: делегат PageView addEventListenerPageView не найден - PullRequest
0 голосов
/ 19 марта 2020

В Cocos2d v3.17 мы использовали приведенный ниже код для создания PageView

    Size size(SW, SH);
    PageView* pageView = PageView::create();
    pageView->setDirection(PageView::Direction::HORIZONTAL);
    pageView->setContentSize(size);
    pageView->setPosition(Vec2(0.0f, 0.0f));
    pageView->removeAllItems();
    pageView->setIndicatorEnabled(true);
    pageView->setGlobalZOrder(200);
    pageView->setIndicatorIndexNodesOpacity(255);
    pageView->setIndicatorPosition(Vec2(SW*0.5, SH*0.2));

    this->addChild(pageView, 1);

    int pageCount = 4;
    for (int i = 0; i < pageCount; ++i)
    {
        GBMapSelectionPage *page = GBMapSelectionPage::initWithParent(this, i);

        page->setContentSize(size);

        pageView->insertCustomItem(page, i);

    }

    pageView->addEventListenerPageView(this, pagevieweventselector(GBMapScreen::pageViewEvent));

Прослушиватель событий

void GBMapScreen::pageViewEvent(Ref *pSender, PageViewEventType type)
{
    switch (type)
    {
        case PAGEVIEW_EVENT_TURNING:
        {
            PageView* pageView = dynamic_cast<PageView*>(pSender);

            _displayValueLabel->setString(StringUtils::format("page = %ld", static_cast<long>(pageView->getCurrentPageIndex() + 1)));
        }
            break;

        default:
            break;
    }
}

В Cocos2dx v4.0 отсутствует addEventListenerPageView. Как получить делегат прокрутки страницы?

1 Ответ

0 голосов
/ 19 марта 2020

В Cocos2d-x v4.0 мы можем использовать addEventListener для получения делегатов PageView

pageView->addEventListener((ui::PageView::ccPageViewCallback)CC_CALLBACK_2(GBMapScreen::pageViewEvent,this));

Функция делегата:

void GBMapScreen::pageViewEvent(Ref *pSender, ui::PageView::EventType EventType)
{
    switch (EventType)
    {
        case ui::PageView::EventType::TURNING:
            {
                PageView* pageView = dynamic_cast<PageView*>(pSender);

                int index = static_cast<int>(pageView->getCurrentPageIndex()+1);

                printf("Scrolled to Page : %d\n", index);
            }
            break;

        default:
            break;
    }
}
...