16、UI控件
包含头文件
#include "ui/cocosGUI.h"
using namespace ui;
(1)Button(按钮)
.h里面声明方法
public:
void uiButtonDemo();//button方法
void buttonFunC(Ref* psender,Widget::TouchEventType e);//button的点击事件
.cpp里面的init函数中调用uiButtonDemo()方法
void HelloWorld::uiButtonDemo()
{
Button* b=Button::create();
b->loadTextureNormal("btn-about-normal.png");//正常显示的图片
b->loadTexturePressed("btn-about-selected.png");//点击时的图片
b->loadTextureDisabled("btn-about-disable.png");//不可点击的图片
// b->loadTextures("正常时的图片", "点击时的图片");
b->setPosition(Vec2(240, 160));//设置位置
b->setTitleText("添加文字");
b->setTitleFontName("设置字体");
b->setTitleFontSize(28);//设置字体大小
b->setTitleColor(Color3B(255,0,0));//设置颜色
b->setEnabled(false);//设置是否可以点击 true可以,false不可以点击
b->setBright(true);//设置是否添加不可点击图片,true是不添加,false是添加
this->addChild(b);
//添加点击事件
b->addTouchEventListener(CC_CALLBACK_2(HelloWorld::buttonFunc,this));
}
bool key=false;
void HelloWorld::buttonFunC(Ref* psender,Widget::TouchEventType e)
{
if (e==Widget::TouchEventType::BEGAN) {
key=false;
log("BEGAN");
}
else if (e==Widget::TouchEventType::MOVED) {
log("MOVED");
}
else
{
log("End");
}
}
(2)Slider(滑块)
包含头文件
#include "cocos-ext.h"
using namespace extension;
auto slider=ControlSlider::create("", "", "");
slider->setMaximumAllowedValue(100);
slider->setMinimumAllowedValue(0);
.h里面声明方法
public:
void uiSliderDemo();
void sliderFunC(Ref* ,Slider::EventType);
.cpp里面的init函数中调用uiSliderDemo()方法
void HelloWorld::uiSliderDemo()
{
Slider* slider=Slider::create();
slider->loadBarTexture("SliderBarFixed.png");//底部图片
slider->loadSlidBallTextureNormal("SliderButton.png");//正常显示图片
slider->loadSlidBallTexturePressed("SliderButton.png");//点击是图片
slider->setPosition(Vec2(240, 160));
this->addChild(slider);
//添加事件
slider->addEventListener(CC_CALLBACK_2(HelloWorld::sliderFunC, this));
slider->setPercent(50);//设置初始位置
}
void HelloWorld::sliderFunC(Ref* psender,Slider::EventType e)
{
Slider* s=(Slider*)psender;
log("%i",s->getPercent());//获取滑块的值
}
(3)LoadingBar(进度条)
.h里面声明方法
public:
void uiLoadingBarDemo();
void HelloWorld::uiLoadingBarDemo()//显示加载或下载的进度
{
LoadingBar* bar=LoadingBar::create();
bar->loadTexture("loadingbar.png");
bar->setPosition(Vec2(240, 160));
this->addChild(bar);
bar->setPercent(50);
}
(4)CheckBox(勾选框)
.h里面声明方法
public:
void uiChechkBoxDemo();//选择
void checkBoxFunc(Ref* psender,CheckBox::EventType e);
void HelloWorld::uiChechkBoxDemo()
{
CheckBox* box=CheckBox::create("RadioButtonOff.png", "RadioButtonOffPressed.png","RadioButtonOn.png","RadioButtonOffDisabled.png", "RadioButtonOnDisabled.png");//1 没有选中的正常显示的图片 2 没有选中的点击时候的图片 3 选中的正常显示的图片 4 没有选中 不可点击的图片 5选中的 不可点击的图片
// CheckBox::create(const std::string &backGround, const std::string &backGroundSeleted, const std::string &cross, const std::string &backGroundDisabled, const std::string &frontCrossDisabled);
CheckBox* checkBox2 = CheckBox::create("check_box_normal.png",//未选中时的显示图片
"check_box_normal_press.png",//点击checkBox后触摸没有松开时的图片
"check_box_active.png",//选中时的显示图片
"check_box_normal_disable.png",//从选中到未选中切换过程中,触摸没有松开时的显示图片
"check_box_active_disable.png”);
box->setPosition(Vec2(240, 160));
this->addChild(box);
box->setSelected(true);//设置选中状态
box->setEnabled(false);
box->setBright(false);
box->addEventListener(CC_CALLBACK_2(HelloWorld::checkBoxFunc, this));
}
void HelloWorld::checkBoxFunc(Ref* psender,CheckBox::EventType e)
{
CheckBox* box=(CheckBox*)psender;
if (box->isSelected()) {
log("YES");
}
else
{
log("NO");
}
}
(5)EditBox(编辑框)
.h里面声明方法,并且需要加上那个public EditBoxDelegate
public:
void uiEditBoxDemo();
void editBoxEditingDidBegin(EditBox* editBox);
void editBoxEditingDidEnd(EditBox* editBox);
void editBoxTextChanged(EditBox* editBox, const std::string& text);
void editBoxReturn(EditBox* editBox);
void HelloWorld::uiEditBoxDemo()
{
Scale9Sprite* s9=Scale9Sprite::create("textField.png");
EditBox* box=EditBox::create(Size(240,60), s9);
box->setPosition(Vec2(240, 160));
this->addChild(box);
box->setPlaceHolder("please");//提示文字
// box->setPlaceholderFont("Menlo", 60);
box->setPlaceholderFontName("Menlo");
box->setPlaceholderFontSize(60);//必须设置字体才能改变字体大小 先设置字体
box->setPlaceholderFontColor(Color3B(255,0,0));
box->setMaxLength(10);//最多输入个数
box->setPlaceholderFont("Menlo", 60);
box->setPlaceholderFontColor(Color3B(0,255,0));
box->setInputFlag(cocos2d::ui::EditBox::InputFlag::PASSWORD);//密码显示
box->setReturnType(EditBox::KeyboardReturnType::DONE);//键显示文字的设置
//box->setInputMode(cocos2d::ui::EditBox::InputMode::PHONE_NUMBER);//出现相应输入的键盘
box->setDelegate(this);
}
void HelloWorld::editBoxEditingDidBegin(EditBox* editBox)
{
log("editBoxEditingDidBegin");
}
void HelloWorld::editBoxEditingDidEnd(EditBox* editBox)
{
log("editBoxEditingDidEnd");
}
void HelloWorld::editBoxTextChanged(EditBox* editBox, const std::string& text)
{
log("editBoxTextChanged");
log("%s",editBox->getText());
}
void HelloWorld::editBoxReturn(EditBox* editBox)
{
log("editBoxReturn");
}
(6)ImageView(图像视图)
(7)ScrollView(滑动视图)
auto vibleSize=Director::getInstance()->getVisibleSize();
ScrollView* sc=ScrollView::create();
sc->setContentSize(Size(200,200));
sc->setInnerContainerSize(Size(480,320));
sc->setDirection(ScrollView::Direction::BOTH);//设置滑动方向
//默认回弹是关闭的
sc->setBounceEnabled(true);
//默认惯性滑动是开启的
sc->setInertiaScrollEnabled(true);
sc->addEventListener(CC_CALLBACK_2(HelloWorld::scrollviewFunc, this));
auto sprite=Sprite::create("HelloWorld.png");
sprite->setAnchorPoint(Vec2(0, 0));
sprite->setPosition(Vec2(0, 0));
sc->addChild(sprite);//向内部窗口加子节点
sc->setPosition(vibleSize/2);
sc->scrollToBottomRight(2.0, true);//减速,2.秒移动到窗口右下角
addChild(sc);
(8)ListView(列表视图)
ListView* list=ListView::create();
list->setBackGroundImage("HelloWorld.png");//设置背景图片
list->setDirection(ScrollView::Direction::VERTICAL);//设置方向NONE,
// VERTICAL,纵向
//HORIZONTAL,横向
// BOTH
list->setBounceEnabled(true);//弹性效果
list->setContentSize(Size(480,640));//设置外部窗口大小
list->setPosition(Vec2(120, 80));
list->setItemsMargin(20);//设置条目之间的间隔
addChild(list);
Layout* layout=Layout::create();
layout->setContentSize(Size(120, 30));
Button* b=Button::create();
b->setTag(101);
b->loadTextureNormal("btn-about-normal.png");//正常显示的图片
b->loadTexturePressed("btn-about-selected.png");//点击时的图片
b->loadTextureDisabled("btn-about-disable.png");//不可点击的图片
b->setScale9Enabled(true);
b->setContentSize(Size(120, 30));
b->setPressedActionEnabled(true);
b->setZoomScale(0.5f);
b->setTitleText("");
b->setTitleFontName("Menlo");
b->setTitleFontSize(28);//设置字体大小
b->setTitleColor(Color3B(255,0,0));//设置颜色
b->setPosition(Vec2(50,15));
layout->addChild(b);
list->setItemModel(layout);
for (int i=0; i<100; i++) {
list->pushBackDefaultItem();
}
for (int i=0; i<100; i++) {
Button* b=(Button*)list->getItem(i)->getChildByTag(101);
b->setTitleText(__String::createWithFormat("%i",i+1)->getCString());
}
(9)Layout(布局层)
(10)PageView(布局层)
PageView* page=PageView::create();
page->setContentSize(Size(480,320));//指定窗口大小
for (int i=0; i<10; i++) {
Layout* layout=Layout::create();//创建一个布局
layout->setBackGroundImage("HelloWorld.png");//指定背景图片
Button* b=Button::create();
b->loadTextureNormal("btn-about-normal.png");//正常显示的图片
b->loadTexturePressed("btn-about-selected.png");//点击时的图片
b->loadTextureDisabled("btn-about-disable.png");//不可点击的图片
b->setPosition(Vec2(240, 160));//设置位置
b->setZoomScale(0.0);//点击是否放大1+0.5倍默认是0.1
//添加点击事件
b->addTouchEventListener([](Ref* ,Widget::TouchEventType e)
{
static bool key=false;
if (e==Widget::TouchEventType::BEGAN) {
key=false;
}
else if (e==Widget::TouchEventType::MOVED)
{
key=true;
}
else
{
if (!key) {
log("Helloworld");//跳转到另外场景
}
}
});
layout->addChild(b);
__String* str=__String::createWithFormat("%i",i);
Label* la=Label::createWithSystemFont(str->getCString(), "", 32);
la->setPosition(Vec2(120, 80));
layout->addChild(la);
page->addPage(layout);
}
page->scrollToPage(3);
//page->removePage(cocos2d::ui::Layout *page)//移除页面
//page->removePageAtIndex(ssize_t index)//移除指定页面
//page->addPage(cocos2d::ui::Layout *page)//在最后添加页面
// page->insertPage(cocos2d::ui::Layout *page, int idx)//插入页面
page->setPosition(Vec2(120, 80));
this->addChild(page);