cocos2d-x3.0 GUI Button PageView Layout ListView ScrollView Image Checkbox editBox

cocos2d-x3.0  GUI    Button   PageView Layout  ListView  ScrollView Image Checkbox   editBox  

#pragma mark 页面视图

cocos2d::ui::Layout * UItest:: createLayout(int index){

    auto ly = cocos2d::ui::Layout::create();

    ly->setBackGroundImage("HelloWorld2.png");

    ly->setContentSize(Size(960, 640));

    //ly->setAnchorPoint(Vec2(0.5, 0.5));

    //ly->setPosition(Vec2(480, 320));

    //addChild(ly);

    for (int i=0; i<9; i++) {

        for (int j=0; j<3; j++) {

        auto btn = cocos2d::ui::Button::create();

        btn->loadTextureNormal("editBG.png");

        btn->setScale9Enabled(true);

        btn->setContentSize(Size(100, 50));

        btn->setZoomScale(0.1);

        btn->setPressedActionEnabled(true);

        btn->setTitleText(StringUtils::format("%d,%d",index,i));

        btn->setTitleFontSize(40);

        btn->setPosition(Vec2(100+i/3*380, 100+25+j%3*220));

        ly->addChild(btn);

            }

    }

    return ly;

}

void UItest:: initPageView(){

    auto pv =cocos2d::ui::PageView::create();

    for (int i=0; i<5; i++) {

        auto lv = createLayout(i);

        pv->addPage(lv);

    }

    pv->setPosition(Vec2(480, 320));

    pv->setContentSize(Size(960, 640));

    pv->setAnchorPoint(Vec2(0.5, 0.5));

    pv->setCustomScrollThreshold(50);// 设置滑动多少距离会切换到下一个page

    addChild(pv);

    pv->addEventListener(CC_CALLBACK_2(UItest::pageview_call, this));

}

void UItest:: pageview_call(Ref* sender,cocos2d::ui::PageView::EventType type){

    auto item = dynamic_cast<cocos2d::ui::PageView *>(sender);

    auto index = item->getCurPageIndex();

    log("index is %zd",index);

}

#pragma mark 布局视图

void UItest:: initLayout(){

    auto ly = cocos2d::ui::Layout::create();

    ly->setBackGroundImage("HelloWorld2.png");

    ly->setContentSize(Size(960, 640));

    ly->setAnchorPoint(Vec2(0.5, 0.5));

    ly->setPosition(Vec2(480, 320));

    addChild(ly);

    for (int i=0; i<9; i++) {

        auto btn = cocos2d::ui::Button::create();

        btn->loadTextureNormal("editBG.png");

        btn->setScale9Enabled(true);

        btn->setContentSize(Size(100, 50));

        btn->setZoomScale(0.1);

        btn->setPressedActionEnabled(true);

        btn->setTitleText(StringUtils::format("%d",i));

        btn->setTitleFontSize(40);

        btn->setPosition(Vec2(100+50+253*i/3, 100+25+140*i/3));

        ly->addChild(btn);

    }

}

#pragma mark 列表视图

void UItest::initListView(){

    auto list = cocos2d::ui::ListView::create();

    list->setContentSize(Size(400, 600));

    list->setPosition(Vec2(480, 320));

    list->setDirection(cocos2d::ui::ScrollView::Direction::VERTICAL);

    list->setAnchorPoint(Vec2(0.5, 0.5));

    list->setItemsMargin(20);// 设置item间的间距

    addChild(list);

    for(int i=0;i<20;i++){

        auto btn = cocos2d::ui::Button::create();

        btn->loadTextureNormal("xydb.png");

        btn->loadTexturePressed("xydb.png");

        btn->setPressedActionEnabled(true);

        btn->setScale9Enabled(true);

        btn->setContentSize(Size(400, 100));

        btn->setPosition(Vec2(480, 320));

        btn->setTag(i);

        btn->addClickEventListener([&](Ref *sender){

            // log("item_index:%d",i);

            // auto bt = dynamic_cast<cocos2d::ui::Button*>(sender);

            // bt->setColor(Color3B::RED);

        });

        list->pushBackCustomItem(btn);

    }

    list->addEventListener(CC_CALLBACK_2(UItest::listView_call, this));

    

}

// 添加监听函数

void UItest::listView_call(Ref *sender,cocos2d::ui::ListView::EventType type){

    auto list = dynamic_cast<cocos2d::ui::ListView *>(sender);

    // 获取当前选中的下标(索引)

    auto item_id = list->getCurSelectedIndex();

    log("index %zd",item_id);

    // 根据获取当前选中对象得到item获取当前选中的item对象

    auto item = list->getItem(item_id);

    item->setColor(Color3B::BLACK);

    if(type==cocos2d::ui::ListView::EventType::ON_SELECTED_ITEM_START){

        log("start");

    }else if (type==cocos2d::ui::ListView::EventType::ON_SELECTED_ITEM_END){

        log("end");

    }

    

}

#pragma mark 滑动视图

void UItest::initScrolView(){

    auto sc = cocos2d::ui::ScrollView::create();

    sc->setContentSize(Size(960, 640));// 外部的窗口的大小

    sc->setInnerContainerSize(Size(960, 640*5));// 内部的窗口的大小

    sc->setPosition(Vec2(480, 320));

    sc->setAnchorPoint(Vec2(0.5, 0.5));// 默认锚点为(00

    sc->setDirection(cocos2d::ui::ScrollView::Direction::BOTH);// 设置滑动的方向

    addChild(sc);

    sc->setBounceEnabled(true);//设置回弹

    sc->setInertiaScrollEnabled(true);//惯性滑动

    for (int i=0; i<5; i++) {

        auto sp = Sprite::create("HelloWorld2.png");

        sp->setPosition(480, 320+640*i);

        sc->addChild(sp);

        auto btn = cocos2d::ui::Button::create();

        btn->loadTextureNormal("0.png");

        btn->loadTexturePressed("2.png");

        btn->loadTextureDisabled("3.png");

        btn->setPosition(Vec2(480, 320));

        sp->addChild(btn);

    }

    sc->addEventListener(CC_CALLBACK_2(UItest::scroll_call, this));

}

void UItest:: scroll_call(Ref * sender,cocos2d::ui::ScrollView::EventType type){

    if (type==cocos2d::ui::ScrollView::EventType::BOUNCE_BOTTOM) {

        log("BOUNCE_BOTTOM");

    }else if (type==cocos2d::ui::ScrollView::EventType::BOUNCE_LEFT){

        log("BOUNCE_Left");

    }else if (type==cocos2d::ui::ScrollView::EventType::BOUNCE_RIGHT){

        log("BOUNCE_Right");

    }else if (type==cocos2d::ui::ScrollView::EventType::SCROLLING){

        log("scrolling");

    }else if (type==cocos2d::ui::ScrollView::EventType::SCROLL_TO_LEFT){

        log("SCROLL_TO_LEFT");

    }else if (type==cocos2d::ui::ScrollView::EventType::SCROLL_TO_RIGHT){

        log("SCROLL_TO_RIGHT");

    }else if (type==cocos2d::ui::ScrollView::EventType::SCROLL_TO_TOP){

        log("SCROLL_TO_Top");

    }

    

}

#pragma mark 输入框

void UItest::initditBox(){

    auto edit = cocos2d::ui::EditBox::create(Size(400, 60), "toukuang.png");

    edit->setPosition(Vec2(480, 320));

    edit->setPlaceHolder("Please input in this box!");

    // 设置真正输入的字

    edit->setFontColor(Color3B::BLACK);

    edit->setFontSize(30);

    // 设置输入模式

    edit->setInputFlag(cocos2d::ui::EditBox::InputFlag::PASSWORD);

    // 设置键盘返回模式

    edit->setReturnType(EditBox::KeyboardReturnType::DONE);


    edit->setDelegate(this);

    addChild(edit);

}

// 重写代理函数(这个类需要继承自cocos2d::ui::EditBoxDelegate代理)

void UItest::editBoxEditingDidBegin(EditBox* editBox){

    log("input begin");

}

void UItest::editBoxEditingDidEnd(EditBox* editBox){

    log("input end");

}

void UItest::editBoxTextChanged(EditBox* editBox, const std::string& text){

    log("input changed");

    log("%s",text.c_str());

}

void UItest::editBoxReturn(EditBox* editBox){

    log("return");

}

#pragma mark 图片

void UItest::initImage(){

    auto image = cocos2d::ui::ImageView::create("HelloWorld.png");

    image->setScale9Enabled(true);

    image->setContentSize(Size(400, 300));

    image->cocos2d::Node::setPosition(480, 320);

    addChild(image);

}

#pragma mark 勾选框

void UItest::initCheckBox(){

    auto checkBox = cocos2d::ui::CheckBox::create();

    checkBox->loadTextureBackGround("switch-off.png");

    checkBox->loadTextureBackGroundSelected("switch-on.png");

    checkBox->loadTextureFrontCross("switch-on.png");//切换时的图片

    checkBox->setPosition(Vec2(480, 320));

    checkBox->addEventListener(CC_CALLBACK_2(UItest::checkCall,this));

    addChild(checkBox);

}

void UItest:: checkCall(Ref* sender,cocos2d::ui::CheckBox::EventType type){

    auto item = dynamic_cast<cocos2d::ui::CheckBox *>(sender);

    log("sssssss");

    CCASSERT(item, "the checkBox is null");

    if (type==cocos2d::ui::CheckBox::EventType::SELECTED) {

        log("selected");

    }else{

        log("unselected");

    }

}

#pragma mark 按钮

void UItest::initButton(){

    auto button = cocos2d::ui::Button::create();

    button->loadTextureNormal("0.png");

    button->loadTexturePressed("2.png");

    button->loadTextureDisabled("3.png");

    // button->setBright(false);  设置不可点击按钮

    button->setPressedActionEnabled(true); // 设置点击动作

    button->setZoomScale(-0.5);// 原始大小加上参数即为缩放比例 1+-0.5

    button->setContentSize(Size(300, 300));// 设置按钮尺寸

    button->setScale9Enabled(true); // 开启九宫格(适用于点击后的按钮图片的缩放)

    

    // 设置按钮标题

    button->setTitleText("按钮a1");

    button->setTitleColor(Color3B::BLACK);

    button->setTitleFontName("Marker Felt.ttf");//如果不使用ttf就会是系统默认字体(ttf文件不含中文)

    button->setTitleFontSize(80);

    

    // 添加按钮监听

    button->addClickEventListener(CC_CALLBACK_1(UItest::buttonClick, this));

    button->cocos2d::Node::setPosition(480, 200);

    addChild(button);

}

// 添加按钮回调函数

void UItest::buttonClick(Ref * sender){

    log("click");

    auto item = dynamic_cast<cocos2d::ui::Button *>(sender);

    CCASSERT(item, "this button is null");// 异常处理,如果itemnull输出一句话

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值