코코스2d 개발환경에서 리스트뷰 클릭 이벤트가 호출 되지 않는경우가 있습니다
이럴때에는 아래처럼 해주면 쉽게 문제가 해결됩니다.
제가 찾은 방법? 또는 해줘야하는데 안해줘서 문제였던? 방법은 아래와 같습니다.
먼저 리스트에 setTouchEnabled(true)를 세팅해주고
또, 리스트 아이템에도 setTouchEnabled(true)를 세팅해주니 문제가 해결되었습니다.
아래 코드를 참조해 보세요
[Header file]
void initListView();
void addItemIntoList(ListView* pListView);
// event listen callback function for listview click
void cbListItemClickEvent(Ref *pSender, ListView::EventType type);
[Source file]
void SampleLayer::initListView()
{
auto list= ListView::create();
// add event listener
list->addEventListenerListView(this, listvieweventselector(ExamLayer::cbDontKnowWordEvent));
// important to set this flag
list->setTouchEnabled(true);
...
...
addItemIntoList(list);
}
void SampleLayer::addItemIntoList(ListView* pListView)
{
auto item= Layout::create();
item->setTag(iId);
item->setCascadeOpacityEnabled(true);
// important to set this flag
item->setTouchEnabled(true);
pListView->pushBackCustomItem(item);
}
void SampleLayer::cbListItemClickEvent(Ref *pSender, ListView::EventType type)
{
switch (type)
{
case cocos2d::ui::ListView::EventType::ON_SELECTED_ITEM_END:
{
ListView* listView = static_cast<ListView*>(pSender);
int at = listView->getCurSelectedIndex();
break;
}
default:
break;
}
}
최근댓글