使用 cocos2d-x 3.6 实现滚动视图

Implement a scrollview with cocos2d-x 3.6

本文关键字:滚动 视图 实现 cocos2d-x 使用      更新时间:2023-10-16

>想知道是否有人知道如何在cocos2d-x 3.6(C++)中实现滚动视图。我找到的所有教程都是针对早期的 cocos2d-x 版本。

谢谢

我在下面添加了我的代码,我可以显示灰色滚动视图框,但它无法滚动并且按钮没有出现在上面:

头文件:"CocosGUI.h"和"cocos-ext.h"

//add scroll view
Size scollFrameSize = Size(visibleSize.width, visibleSize.height/4);
auto scrollView = cocos2d::ui::ScrollView::create();
scrollView->setContentSize(scollFrameSize);
scrollView->setBackGroundColorType(cocos2d::ui::Layout::BackGroundColorType::SOLID);
scrollView->setBackGroundColor(Color3B(200, 200, 200));
scrollView->setPosition(Point(0, visibleSize.height/1.5));
scrollView->setDirection(cocos2d::ui::ScrollView::Direction::HORIZONTAL);
scrollView->setBounceEnabled(true);
scrollView->setTouchEnabled(true);
auto containerSize = Size(scollFrameSize.width*2, scollFrameSize.height*2);
 scrollView->setInnerContainerSize(containerSize);
this->addChild(scrollView);

auto button1 = cocos2d::ui::Button::create();
button1->setColor(Color3B(250, 200, 50));
button1->setTouchEnabled(true);
button1->setContentSize(Size(100, 100));
button1->setPosition(Point(containerSize.width / 4, containerSize.height / 2));
scrollView->addChild(button1);
auto button2 = cocos2d::ui::Button::create();
button2->setColor(Color3B(250, 200, 50));
button1->setContentSize(Size(100, 100));
button2->setTouchEnabled(true);
button2->setPosition(Point(containerSize.width / 8, containerSize.height / 2));
scrollView->addChild(button2);
我想

通了,它正在滚动,但我添加的按钮错误。对于任何有兴趣的人,请添加这样的按钮

auto button1 = ui::Button::create();
button1->setTouchEnabled(true);
button1->ignoreContentAdaptWithSize(false);
button1->setContentSize(Size(100, 100));
button1->loadTextures("pic1.png", "pic2.png");
button1->setPosition(Point(containerSize.width / 8, containerSize.height / 2));
scrollView->addChild(button1);
Size scroll_size = Director::getInstance()->getWinSize();
Size container_size = Size(scroll_size.width * 2, scroll_size.height);
Layer* container = Layer::create();
container->setContentSize(container_size);
ScrollView* scroll = ScrollView::create(scroll_size, container);
mScroll->setDelegate(this);
mScroll->setDirection(ScrollView::Direction::HORIZONTAL);

1.容器大小应大于滚动视图大小

2.将子项添加到容器,而不是滚动视图

3.实现滚动视图委托