关于cocos2d::extension::ScrollView视图学习及测试

来源:互联网 发布:gta5没有网络可以玩吗 编辑:程序博客网 时间:2024/06/06 00:38

首先引入包含control控件所需声明的头文件和命名空间,#include "extensions/cocos-ext.h" using namespace extension;

自定义类,公有继承自 Layer 、ScrollViewDelegate,见以下代码:

      OtherGUILayer.hpp

#ifdef OtherGUILayer_hpp#define OtherGUILayer_hpp#include "cocos2d.h"USING_NS_CC;#include "extensions/cocos-ext.h"using namespace extension;class OtherGUILayer: public Layer,public ScrollViewDelegate{public:    static Scene* createScene();    virtual bool init()override;    CREATE_FUNC(OtherGUILayer);public:    virtual void scrollViewDidScroll(extension::ScrollView* view);    virtual void scrollViewDidZoom(extension::ScrollView* view);public:   //测试ScrollView    void addScrollView();};#endif


OtherGUILayer.cpp

#include "OtherGUILayer.hpp"#define WINSIZE Director::getInstance()->getWinSize()Scene* OtherGUILayer::createScene(){    auto scene = Scene::create();    auto layer = OtherGUILayer::create();   scene->addChild(layer);   return scene;}bool OtherGUILayer::init(){    if(!Layer::init()){    return false;    }    auto bg = LayerColor::create(Color4B::YELLOW);    this->addChild(bg);    this->addScrollView();    return true;}void OtherGUILayer::addScrollView(){    auto sp = Sprite::create("HelloWorld.png");    //获取原图片的大小    auto size = sp->getContentSize();    //获取图片实际大小    //auto size1 = sp->getBoundingBox();    auto container = Layer::create();    container->setContentSize(Size(size.width*10,size.height));    for(int i = 0;i<10;i++){        auto label = Label::create();        label->setString(StringUtils::format("%d",i));        label->setSystemFontSize(80);        label->setColor(Color3B::RED);        label->setPosition(Vec2(size.width/2*(i+1),size.height/2));       container->addChild(label);    }    //参数 大小 可视区域内容    auto scrollView = ScrollView::create(size,container);    scrollView->setPosition(WINSIZE/2.0f);    this->addChild(scrollView);    //设置滑动方向    scrollView->setDirection(ScrollView::Direction::HORIZONTAL);    //是否开启弹性效果    scrollView->setBounceable(true);    //设置代理   scrollView->setDelegate(this);}void OtherGUILayer::scrollViewDidScroll(ScrollView* view){    //获取偏移    auto offset = view->getContentOffset();    CCLOG("offset x = %f,y = %f",offset.x,offset.y);}void OtherGUILayer::scrollViewDidZoom(ScrollView* view){    //获取缩放    auto scale = view->getZoomScale();    CCLOG("scale:%f",scale);}