Кто-нибудь может привести пример?
Я пытаюсь следующий код, он всегда показывает ошибку «Нет жизнеспособного преобразования из xxxxx» в строке addEventListener во время компиляции.
// create a scrollview and add event listener
auto scrollView = cocos2d::ui::ScrollView::create();
scrollView->addEventListener(CC_CALLBACK_2(GameMenuLayer::didScrollItemInfoPanel, this));
...
// the callback function
void GameMenuLayer::didScrollItemInfoPanel(Ref* ref, cocos2d::ui::ScrollviewEventType eventType) {
cclog("did scroll...");
}
Я вижу, что определение функции обратного вызова следующее: как мне изменить мой код?
typedef std::function<void(Ref*, EventType)> ccScrollViewCallback;
Я попробовал старый метод, и он отлично работает, но он показывает предупреждение о том, что старый метод устарел.
scrollView->addEventListenerScrollView(this, SEL_ScrollViewEvent(&GameMenuLayer::didScrollItemInfoPanel));
6, 3.7 Я использую следующее без устарелых предупреждений. Вы очень близки, вот пример. Один актерский состав и все будет работать.
Добавить событие в YOUR_CLASS.cpp:
scrollView->addEventListener((ui::ScrollView::ccScrollViewCallback)CC_CALLBACK_2(YOUR_CLASS::scrollEvent,this));
добавьте объявление метода события в YOUR_CLASS.h:
void scrollEvent(Ref* ref, ui::ScrollView::EventType EventType);
И реализовать метод события.