【发布时间】:2016-08-16 06:18:07
【问题描述】:
如何在不干扰滚动的情况下创建带有按钮的滚动视图?
我正在尝试通过创建一个滚动视图(仅水平滚动)并向其添加各种“按钮”来创建一个“工具栏”。
当滚动视图不包含任何按钮时,一切都很好 - 我可以轻松滚动到我心中的内容!问题是当我开始添加按钮时!
如果我的手指接触到没有按钮的区域 - 那么我可以毫无问题地滚动。
但是如果我的手指接触到有按钮的区域,那么拖动不会使滚动视图滚动!相反,按钮似乎“吸收”了触摸并将其注册为“取消”按钮按下!
如何修改我的代码,以便我可以滚动而不受按钮干扰?
这是我的代码:
_mainToolbar = ui::ScrollView::create();
_mainToolbar->setBounceEnabled(false);
_mainToolbar->setDirection(ui::ScrollView::Direction::HORIZONTAL);
_mainToolbar->setScrollBarPositionFromCorner(Vec2(4, 4));
//…..
ui::Button* button = ui::Button::create(imageName,"","",ui::Widget::TextureResType::PLIST);
buttonSize = button->getContentSize();
button->setAnchorPoint(Vec2(0.5, 0.5));
button->setTouchEnabled(true);
button->addTouchEventListener(CC_CALLBACK_2(Main::receiveButtonPressEvent, this));
button->setSwallowTouches(true);
// …
_mainToolbar->addChild(button);
//…..
_mainToolbar->setContentSize(mainToolContentSize);
_mainToolbar->setInnerContainerSize(mainToolbarInnerContainerSize);
//….
void receiveButtonPressEvent(Ref *pSender,ui::Widget::TouchEventType type){
switch (type) {
case ui::Widget::TouchEventType::BEGAN:{
break;
}
case ui::Widget::TouchEventType::MOVED:{
break;
}
case ui::Widget::TouchEventType::ENDED:{
//Some code here if the button is pressed…”
break;
}
case ui::Widget::TouchEventType::CANCELED:{
break;
}
default:{
break;
}
}//End switch(type)
}
编辑:我查看了 CPP 测试,但在测试中,按钮不执行任何操作 - 它们没有任何触摸事件侦听器,因此它们似乎不会干扰。我认为这是我的问题所在,但我不知道如何解决。
【问题讨论】:
标签: c++ cocos2d-x cocos2d-x-3.0