cocos2d-x的GUI控件

使用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;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坚持使我强大

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值