加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2dx3.5 中listview item里面有ControlButton滑动失效的问题

发布时间:2020-12-14 17:26:19 所属栏目:百科 来源:网络整理
导读:出现的主要情况是 我点击在ControlButton上面滑动的时候 ControlButton会将事件吃掉 所以listview就不会滑动 自己也在网络上面查了一些相关资料 最有用的应该是 这一篇文章 。但是使用了里面的方法 在我的项目之中没用用处,事件依然会被 ControlButton吃掉

出现的主要情况是 我点击在ControlButton上面滑动的时候 ControlButton会将事件吃掉 所以listview就不会滑动 自己也在网络上面查了一些相关资料 最有用的应该是 这一篇文章 。但是使用了里面的方法 在我的项目之中没用用处,事件依然会被ControlButton吃掉 所以这里使用的方法是 调用ControlButton的setEnabled 为false 然后使用addEventListener 设置selectedItemEvent 方法selectedItemEvent方法之中去点击item 这样不会影响滑动和点击 我试着断点看了哈源码目前没有发现是什么原因造成的 也不知在新版本是否有这个问题 如果有谁发现了可以在下面留言告诉我
下面贴上我的源码

	mOtherGameListView = cocos2d::ui::ListView::create();
	mOtherGameListView->setDirection(ui::ScrollView::Direction::VERTICAL);//设置ListView布局方向   
	mOtherGameListView->setBounceEnabled(false);//设置反弹效果  
	mOtherGameListView->setAnchorPoint(Vec2(0,0));
	mOtherGameListView->setContentSize(Size(m_other_width,440));
	mOtherGameListView->setInnerContainerSize(Size(m_other_width,440));
	mOtherGameListView->setBackGroundImageScale9Enabled(true);//设置九宫格 
	mOtherGameListView->setPosition(Vec2(0,0));
	mOtherGameListView->ignoreContentAdaptWithSize(false);//开启锚点设置,false可更改锚点,true不可更改,Layer默认为point(0,0),其他Node为Point(0.5,0.5)  
	mOtherGameListView->setGravity(cocos2d::ui::ListView::Gravity::CENTER_VERTICAL);
	m_other_gameLayer->addChild(mOtherGameListView);
	mOtherGameListView->addEventListener((ui::ListView::ccListViewCallback)CC_CALLBACK_2(YYNewGameListLayer::selectedItemEvent,this));


这是点击item用到的事件
void YYNewGameListLayer::selectedItemEvent(Ref *pSender,cocos2d::ui::ListView::EventType type){
switch (type)
{
case cocos2d::ui::ListView::EventType::ON_SELECTED_ITEM_START:
{
cocos2d::ui::ListView* listView = static_cast<cocos2d::ui::ListView*>(pSender);
CC_UNUSED_PARAM(listView);
CCLOG("select child start index = %ld",listView->getCurSelectedIndex());
cocos2d::ui::Layout* item = (cocos2d::ui::Layout *)listView->getItem(listView->getCurSelectedIndex());
//item->setScale(1.1f);
break;
}
case cocos2d::ui::ListView::EventType::ON_SELECTED_ITEM_END:
{
cocos2d::ui::ListView* listView = static_cast<cocos2d::ui::ListView*>(pSender);
CC_UNUSED_PARAM(listView);
cocos2d::ui::Layout* item = (cocos2d::ui::Layout *)listView->getItem(listView->getCurSelectedIndex());
if (roomSelectLayer == NULL)
{
onClickGame(item->getTag());
}
CCLOG("select child end index = %ld",listView->getCurSelectedIndex());
break;
}
default:
break;
}
}


这是添加item
for (size_t i = 0; i < mOtherGameList.size(); i++)
{
ui::Layout * mItem = ui::Layout::create();
mItem->setContentSize(Size(318,110));
mItem->setTouchEnabled(true);
CGameKindItem *pGameKindItem = mOtherGameList[i];
ControlButton *btnGame1 = createButton(
stringFormatC("game_btn_nor_%d.png",pGameKindItem->m_GameKind.wKindID).c_str(),stringFormatC("game_btn_click_%d.png",this,cccontrol_selector(YYNewGameListLayer::onGameBtnClick));
btnGame1->setPosition(Vec2(mItem->getContentSize().width / 2,mItem->getContentSize().height / 2));
btnGame1->setTag(pGameKindItem->m_GameKind.wKindID);
btnGame1->setEnabled(false);
mItem->addChild(btnGame1);
mItem->setTag(pGameKindItem->m_GameKind.wKindID);


mOtherGameListView->pushBackCustomItem(mItem);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读