使用GUI控件首先加入头文件
#include "ui/CocosGUI.h"
using namespace cocos2d::ui;
下面是各种GUI控件的用法:
一、按钮 Button
bool LogdLayer::init()
{
if (!Layer::init())
{
return false;
}
Button* myButton = Button::create(" 图片路径 "," 图片路径 ");
addChild(myButton);
myButton->setPosition(Vec2(200,150));//Vec2(图片的位置)
myButton->setPressedActionEnabled(true);
myButton->addTouchEventListener(CC_CALLBACK_2(LogdLayer::myButtonCallBack, this));
return true;
}
void LogdLayer::myButtonCallBack(Ref* ref, Widget::TouchEventType type)
{
switch (type)
{
case cocos2d::ui::Widget::TouchEventType::BEGAN: //开始
break;
case cocos2d::ui::Widget::TouchEventType::MOVED: //移动
break;
case cocos2d::ui::Widget::TouchEventType::ENDED: //结束
break;
case cocos2d::ui::Widget::TouchEventType::CANCELED: //取消
break;
default:
break;
}
}
二、图片 ImageView
没什么作用只是一张图片,不是精灵,和精灵对比就相当于精灵是一辆汽车,ImageView就是汽车模型
bool LogdLayer::init()
{
if (!Layer::init())
{
return false;
}
ImageView* myImageView = ImageView::create("图片路径");
addChild(myImageView);
myImageView->setPosition(Vec2(250, 400));
return true;
}
三、文本 Text
1.Text
bool LogdLayer::init()
{
if (!Layer::init())
{
return false;
}
Text* myText = Text::create("显示的内容","系统默认的字体和 ttf 的字体","字体大小");
addChild(myText);
myText->setPosition(Vec2(位置));
return true;
}
2.TextBMFont
bool LogdLayer::init()
{
if (!Layer::init())
{
return false;
}
TextBMFont* myTextBMFont = TextBMFont::create("显示的内容", "BMFont字体");
addChild(myTextBMFont);
myTextBMFont->setPosition(Vec2(位置));
return true;
}
3.RichText
bool LogdLayer::init()
{
if (!Layer::init())
{
return false;
}
RichText* myRichText = RichText::create();
RichElementText* ret = RichElementText::create(
1, Color3B::GREEN,200,"显示的内容","字体",32);
// 1编号,Color3B::GREEN颜色,200字体的透明度,32字体大小
RichElementImage* reImg = RichElementImage::create(
2, Color3B::MAGENTA,255,"图片的路径");
myRichText->pushBackElement(ret);//元素
myRichText->pushBackElement(reImg);
addChild(myRichText);
myRichText->setPosition(Vec2(位置));
return true;
}
四、单选框 RadioButtonGroup
bool LogdLayer::init()
{
if (!Layer::init())
{
return false;
}
RadioButtonGroup* myRadioButtonGroup = RadioButtonGroup::create();
addChild(myRadioButtonGroup);
myRadioButtonGroup->setPosition(Vec2::ZERO);
for (size_t i = 0; i < 5; i++)
{
RadioButton* myRadioButton = RadioButton::create("图片路径", "图片路径");
myRadioButtonGroup->addChild(myRadioButton);
myRadioButton->setPosition(Vec2(500,200+i*70));//位置
myRadioButtonGroup->addRadioButton(myRadioButton);
}
myRadioButtonGroup->addEventListener(
CC_CALLBACK_3(LogdLayer::myRadioButtonGroupCallBack,this));
return true;
}
void LogdLayer::myRadioButtonGroupCallBack(RadioButton* radioButton, int index, RadioButtonGroup::EventType type)
{
CCLOG("\nLogdLayer::myRadioButtonGroupCallBack");
switch (type)
{
case cocos2d::ui::RadioButtonGroup::EventType::SELECT_CHANGED:
CCLOG("SELECT_CHANGED index=%d",index);
break;
default:
break;
}
}
五、复选框 CheckBox
bool LogdLayer::init()
{
if (!Layer::init())
{
return false;
}
CheckBox* myCheckBox = CheckBox::create("图片路径", "图片路径");
addChild(myCheckBox);
myCheckBox->setPosition(Vec2(位置));
myCheckBox->addEventListener(CC_CALLBACK_2(LogdLayer::addChildBoxcallBack, this));
return true;
}
void LogdLayer::addChildBoxcallBack(Ref* ref, CheckBox::EventType type)
{
switch (type)
{
case cocos2d::ui::CheckBox::EventType::SELECTED: //被选择
break;
case cocos2d::ui::CheckBox::EventType::UNSELECTED://未被选择
break;
default:
break;
}
}
六、进度条 LoadingBar
bool LogdLayer::init()
{
if (!Layer::init())
{
return false;
}
ImageView* myImageView = ImageView::create("loginRect0.png");
addChild(myImageView);
myImageView->setPosition(Vec2(250, 400));
LoadingBar* myLoadingBar = LoadingBar::create("loginRect1.png");
addChild(myLoadingBar);
myLoadingBar->setPosition(Vec2(250,400));
percent = 0.0f;
myLoadingBar->setDirection(LoadingBar::Direction::LEFT);//从左向右加载
myLoadingBar->setPercent(percent);
scheduleUpdate();
return true;
}
void LogdLayer::update(float dt)
{
percent += dt * 20;
if (percent >= 100)
{
percent = 0.0f;
}
myLoadingBar->setPercent(percent);
}
七、滑块 Slider
bool LogdLayer::init()
{
if (!Layer::init())
{
return false;
}
Slider* mySlider = Slider::create();
addChild(mySlider);
mySlider->setPosition(Vec2(750, 100));
mySlider->loadBarTexture("Logan/loginRect0.png");// 没有滑过的时候
mySlider->loadSlidBallTextures("player_fire2.png", "player_fire3.png"); //未选中和选中
mySlider->loadProgressBarTexture("Logan/loginRect1.png "); //滑过的时候
mySlider->setMaxPercent(360);//最大进度
mySlider->addEventListener(CC_CALLBACK_2(LogdLayer::mySliderCallBack, this));
return true;
}
void LogdLayer::mySliderCallBack(Ref* ref, Slider::EventType type)
{
Slider*pSlider = dynamic_cast<Slider*>(ref);//转换ref类型
switch (type)
{
case cocos2d::ui::Slider::EventType::ON_PERCENTAGE_CHANGED://滑动的时候
CCLOG("ON_PERCENTAGE_CHANGED getPercent=%d", pSlider->getPercent());
break;
case cocos2d::ui::Slider::EventType::ON_SLIDEBALL_DOWN://按下
CCLOG("ON_SLIDEBALL_DOWN");
break;
case cocos2d::ui::Slider::EventType::ON_SLIDEBALL_UP://抬起
CCLOG("ON_SLIDEBALL_UP");
break;
case cocos2d::ui::Slider::EventType::ON_SLIDEBALL_CANCEL://取消
CCLOG("ON_SLIDEBALL_CANCEL");
break;
default:
break;
}
}