cocosStudio中使用PageView,ListView和ScrollView
来源:互联网 发布:python怎么安装库 编辑:程序博客网 时间:2024/05/05 17:16
晚上吃东西好像吃坏肚子了,。但是技术还要继续研究。最近工作中要使用CocosStudio做界面,好吧,不管对他有什么偏见,学习一下吧。这里主要记录一下三个控件的使用和说明。就是ScrollView,ListView和PageView。
首先大致的介绍一下这三个控件吧,scrollView顾名思义,滑动容器可以上下滑动,也可以左右滑动。PageView可以这么理解,它就是scrollView的超级版,因为它是整页滑动。listView是列表容器,它相对与其它两个控件来讲,它不不能添加精灵、粒子、声音、地图和节点对象。
在cocosStudio(使用版本2.0.6)中创建,如下图,可以看到三种容器分别是滑动容器,列表容器和翻页容器
创建地方式就是直接拖到场景中,然后在其中加入对应地组件,这是在一些确定地情况下使用的。但是,通常的情况是我们程序需要使用代码来根据不同的数据动态的加入各种的界面组件。下面就使用程序创建加入组件,这个前提依然是使用cocosStudio创建一个空的容器,然后手动加入容器中的内容。
ScrollView:
cocosStudio中创建一个场景,场景中放入一个空的scrollView,下面代码加入其中的组件
void HelloWorld::initScrollView() { auto layer = CSLoader::getInstance()->createNode("ScrollViewScene.csb"); this->addChild(layer, 1); auto scrollView = static_cast<ui::ScrollView *>(Helper::seekWidgetByName(static_cast<Widget *>(layer), "ScrollView_1")); for (auto i = 0; i< 4; i++) { auto btn = Button::create("bunny.png"); //这里我是直接加入了一个按钮,还可以加入其它的东西,甚至是一个子界面 btn->setTouchEnabled(true); btn->setTitleText("scrollViewBtn"); btn->setTitleFontSize(30); scrollView->addChild(btn); btn->addClickEventListener(CC_CALLBACK_1(HelloWorld::clickBtnCallback, this)); btn->setPosition(Vec2(300, 50 + i * 100)); //自己设置对应的位置 } scrollView->scrollToBottom(0.1f, false);// scrollView->setDirection(cocos2d::ui::ScrollView::Direction::VERTICAL);// scrollView->jumpToBottom(); scrollView->addEventListener(CC_CALLBACK_2(HelloWorld::scrollViewMoveCallback, this));}void HelloWorld::scrollViewMoveCallback(cocos2d::Ref *pSender, cocos2d::ui::ScrollView::EventType eventType) { switch (eventType) { case ui::ScrollView::EventType::SCROLLING: CCLOG("scrolling"); break; case ui::ScrollView::EventType::SCROLL_TO_BOTTOM: CCLOG("scrolling bottom"); break; case ui::ScrollView::EventType::SCROLL_TO_TOP: CCLOG("scrolling top"); break; default: break; }}
PageView:
cocosStudio中创建一个场景,场景中放入一个空的pageView,加入其中的组件
void HelloWorld::initPageView() { auto layer = CSLoader::getInstance()->createNode("PageViewScene.csb"); this->addChild(layer, 1); auto winSize = Director::getInstance()->getWinSize(); auto pageView = static_cast<ui::PageView *>(Helper::seekWidgetByName(static_cast<Widget *>(layer), "PageView_1")); pageView->setTouchEnabled(true); for (auto i = 0; i<5; i++) { auto layout = Layout::create(); layout->setContentSize(pageView->getContentSize());// auto node = CSLoader::getInstance()->createNode("Stone.csb");// layout->addChild(node); auto label = Text::create(); label->setString(std::string(__String::createWithFormat("xxx _%d", i)->getCString())); label->setFontSize(40); layout->addChild(label); label->setPosition(Vec2(100, 100)); pageView->addPage(layout); }}
ListView:
cocosStudio中创建一个场景,场景中放入一个空的listView,下面代码加入其中的组件
void HelloWorld::initListView() { auto node = CSLoader::getInstance()->createNode("MainScene.csb"); addChild(node, 1); auto node1 = CSLoader::getInstance()->createNode("Stone.csb"); // node->addChild(node1, 1); // node1->setPosition(Vec2(300, 500)); auto layout = static_cast<Layout *>(Helper::seekWidgetByName(static_cast<Widget *>(node), "ListView_1")); // layout->setPosition(Vec2(300, 300)); layout->removeAllChildren(); auto listView = static_cast<ListView *>(layout); listView->setGravity(cocos2d::ui::ListView::Gravity::CENTER_HORIZONTAL); listView->setItemsMargin(10.0f); listView->setClippingEnabled(true); for (auto i = 0; i<10; i++) { if (i == 1) { listView->insertCustomItem(static_cast<Widget *>(node1), i); continue; } if (i%2 == 0) { auto img = ImageView::create(); img->loadTexture("bunny.png"); listView->insertCustomItem(img, i); img->setTouchEnabled(true); img->addTouchEventListener(CC_CALLBACK_2(HelloWorld::clickImgCallback, this)); img->setTag(i); } else { // auto img = ImageView::create(); // img->loadTexture("stone.png"); // listView->insertCustomItem(img, i); auto btn = Button::create(); btn->loadTextureNormal("stone.png"); btn->setTouchEnabled(true); auto btnName = __String::createWithFormat("BTN_%d", i); btn->setTitleText(std::string(btnName->getCString())); btn->setTitleFontSize(20); btn->setTag(i); btn->addClickEventListener(CC_CALLBACK_1(HelloWorld::clickBtnCallback, this)); listView->insertCustomItem(btn, i); } }}void HelloWorld::clickBtnCallback(cocos2d::Ref *pSender) { auto btn = static_cast<Button *>(pSender); CCLOG("click btn Tag = %d", btn->getTag());}void HelloWorld::clickImgCallback(cocos2d::Ref *pSender, Widget::TouchEventType event) { if (event != Widget::TouchEventType::ENDED) { return; } auto img = static_cast<ImageView *>(pSender); CCLOG("click img Tag = %d", img->getTag());}
这里只是一些简单的例子,如果想要研究更加仔细的东西,看源码。程序员必备的技能!
0 0
- cocosStudio中使用PageView,ListView和ScrollView
- cocosStudio中使用PageView,ListView和ScrollView
- Scrollview.pageview和listview的使用
- cocos2dx-ScrollView和 ListView、PageView控件的使用
- Cocos2d-JS中使用CocosStudio资源——ListView和ScrollView
- 在v2.x版本中使用V3版的Listview Pageview Scrollview
- Cocostudio(1) 容器层的使用- ScrollView ListView PageView
- 自定义ScrollView嵌套Pageview和GridView(ListView)的相关问题
- cocosStudio制作ScrollView并在cocos2dx 3.0中使用。
- 关于PageView,ListView,ScrollView的一些看法
- 在ScrollView中使用GridView和ListView
- cocosStudio的使用-04-PageView无法垂直滑动解决办法
- PageView 和ListView 代码实现
- 在ScrollView中使用ListView
- Cocostudio学习笔记(6) ScrollView+ ListView+ PageView
- Cocostudio学习笔记(6) ScrollView+ ListView+ PageView
- ScrollView和Listview结合使用
- ScrollView和listView嵌套使用
- 20150111
- 随机生成验证码图片并将之输出为一个png文件。
- SpringMvc的文件上传 和如何获取服务器的真正的文件路径
- android序列化
- 黑马程序员--Java基础五(Java中的IO流)
- cocosStudio中使用PageView,ListView和ScrollView
- 程序设计《题目二》(双链表版)
- 从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
- 【ExtJS】Action权限校验
- 三目运算符作为左值时的使用注意
- erlang binary数据转换的问题
- Google 面试题 第K小的数字 二分逼近&二分查找
- ubuntu 14.04中安装 ruby on rails 环境(填坑版) 呕血推荐
- 《数据结构》 课程设计