Cocosstudio UI组件


按钮UIButton
复选框UICheckBox
滑块UiSlider
图片UIImageView
进度条UILoadingBar
纹理文本 UITextAtlas
字体文本 UIText
图片字体文本 UITextBMFont
文本区域 UITextField
布局组件 UILayout
滚动组件 UIScrollView
页面切换组件 UIPageView
列表组件 UIListView
所有控件都继承 UIWidget
可以通过addChild()添加UIWidget类型的节点
可以通过addRender()添加CCNode类型的节点
一、使用方法
1.1 在解决方案中添加项目并添加引用
libCocostudio
libGui
libExtensions
1.2 在项目中引用以下2个头文件
#include "extensions/cocos-ext.h"
#include "ui/CocosGUI.h"
USING_NS_CC;
using namespace ui;
1.3 使用Cocosstudio UI编辑器或直接通过代码定义组件对象
二、各组件使用详解
2.1.UIButton
2.1.1 按钮对象的创建
// 创建按钮 button
Button* button = Button::create("cocosui/animationbuttonnormal.png",
"cocosui/animationbuttonpressed.png");
//设置坐标
button->setPosition(Point(widgetSize.width / 2.0f,widgetSize.height / 2.0f));
//添加事件
button->addTouchEventListener(this,toucheventselector(UIButtonTest::touchEvent));
//添加到图层
_uiLayer->addChild(button);
2.1.2 事件处理方法:
void UIButtonTest::touchEvent(Ref *pSender,TouchEventType type)
{ switch (type)
{ case TOUCH_EVENT_BEGAN:
_displayValueLabel->setText(String::createWithFormat("Touch Down")->getCString());
break;
case TOUCH_EVENT_MOVED:
_displayValueLabel->setText(String::createWithFormat("Touch Move")->getCString());
case TOUCH_EVENT_ENDED:
_displayValueLabel->setText(String::createWithFormat("Touch Up")->getCString());
case TOUCH_EVENT_CANCELED:
_displayValueLabel->setText(String::createWithFormat("Touch Cancelled")->getCString());
break;
default:
}

}
2.1.3 使用9Path图片
// Create the button
Button* button = Button::create("cocosui/button.png","cocosui/buttonHighlighted.png");
// open scale9 render
button->setScale9Enabled(true);
button->setCapInsets(Rect(5,5,15,15));
button->setSize(Size(150,70));
2.1.4 实现pressedAction效果
// Create the button
pressed.png");
button->setpressedActionEnabled(true);
pressedAction::touchEvent));
2.1.5 实现TitleButton
// Create the button with title
Button* button = Button::create("cocosui/backtotoppressed.png","cocosui/backtotopnormal.png");
button->setTitleText("Title Button");
2.2.UICheckBox
2.2.1 添加CheckBox
// Create the checkBox
CheckBox* checkBox = CheckBox::create("cocosui/check_Box_normal.png",51); font-family:Arial; font-size:14px; line-height:26px"> "cocosui/check_Box_normal_press.png",51); font-family:Arial; font-size:14px; line-height:26px"> "cocosui/check_Box_active.png",51); font-family:Arial; font-size:14px; line-height:26px"> "cocosui/check_Box_normal_disable.png",51); font-family:Arial; font-size:14px; line-height:26px"> "cocosui/check_Box_active_disable.png");
checkBox->setPosition(Point(widgetSize.width / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px">
checkBox->addEventListenerCheckBox(this,checkBoxselectedeventselector(UICheckBoxTest::selectedEvent));
_uiLayer->addChild(checkBox);
2.2.2 处理用户选中事件
void UICheckBoxTest::selectedEvent(Ref* pSender,CheckBoxEventType type)
{
switch (type)
{
case CHECKBox_STATE_EVENT_SELECTED:
_displayValueLabel->setText(String::createWithFormat("Selected")->getCString());

case CHECKBox_STATE_EVENT_UNSELECTED:
_displayValueLabel->setText(String::createWithFormat("Unselected")->getCString());
}
2.3.UiSlider
2.3.1
// Create the slider
Slider* slider = Slider::create();
slider->loadBarTexture("cocosui/sliderTrack.png");
slider->loadSlidBallTextures("cocosui/sliderThumb.png","cocosui/sliderThumb.png","");
slider->loadProgressBarTexture("cocosui/sliderProgress.png");
slider->setPosition(Point(widgetSize.width / 2.0f,widgetSize.height / 2.0f/* + slider->getSize().height * 2.0f*/));
slider->addEventListenerSlider(this,sliderpercentchangedselector(UiSliderTest::sliderEvent));
_uiLayer->addChild(slider);
2.3.2
void UiSliderTest::sliderEvent(Ref *pSender,SliderEventType type)
{
if (type == SLIDER_PERCENTCHANGED)
Slider* slider = dynamic_cast<Slider*>(pSender);
int percent = slider->getPercent();
_displayValueLabel->setText(String::createWithFormat("Percent %d",percent)->getCString());
}
2.3.3
// Create the slider
slider->loadBarTexture("cocosui/sliderTrack2.png");
slider->loadProgressBarTexture("cocosui/slider_bar_active_9patch.png");
slider->setScale9Enabled(true);
slider->setCapInsets(Rect(0,0));
slider->setSize(Size(250.0f,19));
iSliderTest_Scale9::sliderEvent));
2.4.UIImageView
2.4.1 // Create the imageview
ImageView* imageView = ImageView::create("cocosui/ccicon.png");
imageView->setPosition(Point(widgetSize.width / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> widgetSize.height / 2.0f));
_uiLayer->addChild(imageView);
2.4.2
// Create the imageview
ImageView* imageView = ImageView::create("cocosui/buttonHighlighted.png");
imageView->setScale9Enabled(true);
imageView->setSize(Size(300,115));
2.5.UILoadingBar
2.5.1创建进度条
// Create the loading bar
LoadingBar* loadingBar = LoadingBar::create("cocosui/sliderProgress.png");
loadingBar->setTag(0);
loadingBar->setPosition(Point(widgetSize.width / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> widgetSize.height / 2.0f + loadingBar->getSize().height / 4.0f));
_uiLayer->addChild(loadingBar);
2.5.2 修改进度条的长度
void UILoadingBarTest_Left::update(float delta)
_count++;
if (_count > 100)
_count = 0;
LoadingBar* loadingBar = static_cast<LoadingBar*>(_uiLayer->getChildByTag(0));
loadingBar->setPercent(_count);
}
2.5.3 修改进度条的方向
// Create the loading bar
loadingBar->setDirection(LoadingBarTypeRight);
2.5.4 scale9
LoadingBar* loadingBar = LoadingBar::create("cocosui/slider_bar_active_9patch.png");
loadingBar->setScale9Enabled(true);
loadingBar->setCapInsets(Rect(0,51); font-family:Arial; font-size:14px; line-height:26px"> loadingBar->setSize(Size(300,13));
widgetSize.height / 2.0f + loadingBar->getSize().height / 4.0f));
2.6.UITextAtlas
TextAtlas* textAtlas = TextAtlas::create("1234567890","cocosui/labelatlas.png",17,22,"0");
textAtlas->setPosition(Point((widgetSize.width) / 2,51); font-family:Arial; font-size:14px; line-height:26px"> _uiLayer->addChild(textAtlas);
2.7.UIText
2.7.1
// Create the text
Text* text = Text::create("Text","AmericanTypewriter",30);
text->setPosition(Point(widgetSize.width / 2.0f,widgetSize.height / 2.0f + text->getSize().height / 4.0f));
_uiLayer->addChild(text);
2.7.2
// Create the line wrap
Text* text = Text::create("Text can line wrap",32);
text->ignoreContentAdaptWithSize(false);
text->setSize(Size(280,150));
text->setTextHorizontalAlignment(TextHAlignment::CENTER);
2.7.3 create with ttf
Text* alert = Text::create("Text line wrap","fonts/Marker Felt.ttf",51); font-family:Arial; font-size:14px; line-height:26px"> alert->setColor(Color3B(159,168,176));
alert->setPosition(Point(widgetSize.width / 2.0f,widgetSize.height / 2.0f - alert->getSize().height * 1.75f));
_uiLayer->addChild(alert);
2.8.UITextBMFont
// Create the TextBMFont
TextBMFont* textBMFont = TextBMFont::create("BMFont","cocosui/bitmapFontTest2.fnt");
textBMFont->setPosition(Point(widgetSize.width / 2,widgetSize.height / 2.0f + textBMFont->getSize().height / 8.0f));
_uiLayer->addChild(textBMFont);
2.9.UITextField
2.9.1
// Create the textfield
TextField* textField = TextField::create("input words here",51); font-family:Arial; font-size:14px; line-height:26px">
textField->setPosition(Point(widgetSize.width / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> textField->addEventListenerTextField(this,textfieldeventselector(UITextFieldTest::textFieldEvent));
_uiLayer->addChild(textField);
2.9.2
void UITextFieldTest::textFieldEvent(Ref *pSender,TextFiledEventType type)
case TEXTFIELD_EVENT_ATTACH_WITH_IME:
{
TextField* textField = dynamic_cast<TextField*>(pSender);
Size screenSize = CCDirector::getInstance()->getWinSize();
textField->runAction(CCMoveto::create(0.225f,51); font-family:Arial; font-size:14px; line-height:26px"> Point(screenSize.width / 2.0f,screenSize.height / 2.0f + textField->getContentSize().height / 2.0f)));
_displayValueLabel->setText(String::createWithFormat("attach with IME")->getCString());
}
case TEXTFIELD_EVENT_DETACH_WITH_IME:
textField->runAction(CCMoveto::create(0.175f,Point(screenSize.width / 2.0f,screenSize.height / 2.0f)));
_displayValueLabel->setText(String::createWithFormat("detach with IME")->getCString());
case TEXTFIELD_EVENT_INSERT_TEXT:
_displayValueLabel->setText(String::createWithFormat("insert words")->getCString());
case TEXTFIELD_EVENT_DELETE_BACKWARD:
_displayValueLabel->setText(String::createWithFormat("delete word")->getCString());
textField->setMaxLengthEnabled(true);
textField->setMaxLength(3);
2.9.3
textField->setPasswordEnabled(true);
textField->setPasswordStyleText("*");
2.9.4
textField->ignoreContentAdaptWithSize(false);
textField->setSize(Size(240,160));
textField->setTextHorizontalAlignment(TextHAlignment::CENTER);
textField->setTextVerticalAlignment(TextVAlignment::CENTER);
2.10.UILayout
2.10.1
// Create the layout
Layout* layout = Layout::create();
layout->setSize(Size(280,51); font-family:Arial; font-size:14px; line-height:26px"> Size backgroundSize = background->getSize();
layout->setPosition(Point((widgetSize.width - backgroundSize.width) / 2.0f +
(backgroundSize.width - layout->getSize().width) / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> (widgetSize.height - backgroundSize.height) / 2.0f +
(backgroundSize.height - layout->getSize().height) / 2.0f));
_uiLayer->addChild(layout);//将Layout添加到场景
2.10.2在Layout中添加组件
button->setPosition(Point(button->getSize().width / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> layout->getSize().height - button->getSize().height / 2.0f));
layout->addChild(button);
Button* titleButton = Button::create("cocosui/backtotopnormal.png","cocosui/backtotoppressed.png");
titleButton->setTitleText("Title Button");
titleButton->setPosition(Point(layout->getSize().width / 2.0f,layout->getSize().height / 2.0f));
layout->addChild(titleButton);
Button* button_scale9 = Button::create("cocosui/button.png",51); font-family:Arial; font-size:14px; line-height:26px"> button_scale9->setScale9Enabled(true);
button_scale9->setSize(Size(100.0f,button_scale9->getVirtualRendererSize().height));
button_scale9->setPosition(Point(layout->getSize().width - button_scale9->getSize().width / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> button_scale9->getSize().height / 2.0f));
layout->addChild(button_scale9);
2.10.3
layout->setBackGroundColorType(LAYOUT_COLOR_SOLID);
layout->setBackGroundColor(Color3B(128,128,128));
2.10.4
layout->setBackGroundColorType(LAYOUT_COLOR_GRADIENT);
layout->setBackGroundColor(Color3B(64,64,64),Color3B(192,192,192));
2.10.5
layout->setClippingEnabled(true);
layout->setBackGroundImage("cocosui/Hello.png");
2.10.6
layout->setBackGroundImageScale9Enabled(true);
layout->setBackGroundImage("cocosui/green_edit.png");
2.10.7
// Create the layout
layout->setLayoutType(LAYOUT_LINEAR_VERTICAL);
_uiLayer->addChild(layout);
LinearLayoutParameter* lp1 = LinearLayoutParameter::create();
button->setLayoutParameter(lp1);
lp1->setGravity(LINEAR_GraviTY_CENTER_HORIZONTAL);
lp1->setMargin(Margin(0.0f,5.0f,0.0f,10.0f));
LinearLayoutParameter* lp2 = LinearLayoutParameter::create();
titleButton->setLayoutParameter(lp2);
lp2->setGravity(LINEAR_GraviTY_CENTER_HORIZONTAL);
lp2->setMargin(Margin(0.0f,10.0f,51); font-family:Arial; font-size:14px; line-height:26px"> LinearLayoutParameter* lp3 = LinearLayoutParameter::create();
button_scale9->setLayoutParameter(lp3);
lp3->setGravity(LINEAR_GraviTY_CENTER_HORIZONTAL);
lp3->setMargin(Margin(0.0f,51); font-family:Arial; font-size:14px; line-height:26px">2.10.8
// Create the layout
layout->setLayoutType(LAYOUT_LINEAR_HORIZONTAL);
lp1->setGravity(LINEAR_GraviTY_CENTER_VERTICAL);
lp2->setGravity(LINEAR_GraviTY_CENTER_VERTICAL);
lp3->setGravity(LINEAR_GraviTY_CENTER_VERTICAL);
2.10.9
layout->setLayoutType(LAYOUT_RELATIVE);
layout->setBackGroundColor(Color3B::GREEN);
(backgroundSize.width - layout->getSize().width) / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> (widgetSize.height - backgroundSize.height) / 2.0f +
(backgroundSize.height - layout->getSize().height) / 2.0f));
// top left
Button* button_TopLeft = Button::create("cocosui/animationbuttonnormal.png",51); font-family:Arial; font-size:14px; line-height:26px"> "cocosui/animationbuttonpressed.png");
layout->addChild(button_TopLeft);
RelativeLayoutParameter* rp_TopLeft = RelativeLayoutParameter::create();
rp_TopLeft->setAlign(RELATIVE_ALIGN_PARENT_TOP_LEFT);
button_TopLeft->setLayoutParameter(rp_TopLeft);
// top center horizontal
Button* button_TopCenter = Button::create("cocosui/animationbuttonnormal.png",51); font-family:Arial; font-size:14px; line-height:26px"> "cocosui/animationbuttonpressed.png");
layout->addChild(button_TopCenter);
RelativeLayoutParameter* rp_TopCenter = RelativeLayoutParameter::create();
rp_TopCenter->setAlign(RELATIVE_ALIGN_PARENT_TOP_CENTER_HORIZONTAL);
button_TopCenter->setLayoutParameter(rp_TopCenter);
// top right
Button* button_TopRight = Button::create("cocosui/animationbuttonnormal.png",51); font-family:Arial; font-size:14px; line-height:26px"> layout->addChild(button_TopRight);
RelativeLayoutParameter* rp_TopRight = RelativeLayoutParameter::create();
rp_TopRight->setAlign(RELATIVE_ALIGN_PARENT_TOP_RIGHT);
button_TopRight->setLayoutParameter(rp_TopRight);
// left center
Button* button_LeftCenter = Button::create("cocosui/animationbuttonnormal.png",51); font-family:Arial; font-size:14px; line-height:26px"> layout->addChild(button_LeftCenter);
RelativeLayoutParameter* rp_LeftCenter = RelativeLayoutParameter::create();
rp_LeftCenter->setAlign(RELATIVE_ALIGN_PARENT_LEFT_CENTER_VERTICAL);
button_LeftCenter->setLayoutParameter(rp_LeftCenter);
// center
Button* buttonCenter = Button::create("cocosui/animationbuttonnormal.png",51); font-family:Arial; font-size:14px; line-height:26px"> "cocosui/animationbuttonpressed.png");
layout->addChild(buttonCenter);
RelativeLayoutParameter* rpCenter = RelativeLayoutParameter::create();
rpCenter->setAlign(RELATIVE_CENTER_IN_PARENT);
buttonCenter->setLayoutParameter(rpCenter);
// right center
Button* button_RightCenter = Button::create("cocosui/animationbuttonnormal.png",51); font-family:Arial; font-size:14px; line-height:26px"> "cocosui/animationbuttonpressed.png");
layout->addChild(button_RightCenter);
RelativeLayoutParameter* rp_RightCenter = RelativeLayoutParameter::create();
rp_RightCenter->setAlign(RELATIVE_ALIGN_PARENT_RIGHT_CENTER_VERTICAL);
button_RightCenter->setLayoutParameter(rp_RightCenter);
// left bottom
Button* button_LeftBottom = Button::create("cocosui/animationbuttonnormal.png",51); font-family:Arial; font-size:14px; line-height:26px"> layout->addChild(button_LeftBottom);
RelativeLayoutParameter* rp_LeftBottom = RelativeLayoutParameter::create();
rp_LeftBottom->setAlign(RELATIVE_ALIGN_PARENT_LEFT_BottOM);
button_LeftBottom->setLayoutParameter(rp_LeftBottom);
// bottom center
Button* button_BottomCenter = Button::create("cocosui/animationbuttonnormal.png",51); font-family:Arial; font-size:14px; line-height:26px"> layout->addChild(button_BottomCenter);
RelativeLayoutParameter* rp_BottomCenter = RelativeLayoutParameter::create();
rp_BottomCenter->setAlign(RELATIVE_ALIGN_PARENT_BottOM_CENTER_HORIZONTAL);
button_BottomCenter->setLayoutParameter(rp_BottomCenter);
// right bottom
Button* button_RightBottom = Button::create("cocosui/animationbuttonnormal.png",51); font-family:Arial; font-size:14px; line-height:26px"> layout->addChild(button_RightBottom);
RelativeLayoutParameter* rp_RightBottom = RelativeLayoutParameter::create();
rp_RightBottom->setAlign(RELATIVE_ALIGN_PARENT_RIGHT_BottOM);
button_RightBottom->setLayoutParameter(rp_RightBottom);
2.10.10
// Create the layout
ImageView* imageView_Center = ImageView::create("cocosui/scrollviewbg.png");
layout->addChild(imageView_Center);
RelativeLayoutParameter* rp_Center = RelativeLayoutParameter::create();
rp_Center->setRelativeName("rp_Center");
rp_Center->setAlign(RELATIVE_CENTER_IN_PARENT);
imageView_Center->setLayoutParameter(rp_Center);
// above center
ImageView* imageView_AboveCenter = ImageView::create("cocosui/switch-mask.png");
layout->addChild(imageView_AboveCenter);
RelativeLayoutParameter* rp_AboveCenter = RelativeLayoutParameter::create();
rp_AboveCenter->setRelativetoWidgetName("rp_Center");
rp_AboveCenter->setAlign(RELATIVE_LOCATION_ABOVE_CENTER);
imageView_AboveCenter->setLayoutParameter(rp_AboveCenter);
// below center
ImageView* imageView_BelowCenter = ImageView::create("cocosui/switch-mask.png");
layout->addChild(imageView_BelowCenter);
RelativeLayoutParameter* rp_BelowCenter = RelativeLayoutParameter::create();
rp_BelowCenter->setRelativetoWidgetName("rp_Center");
rp_BelowCenter->setAlign(RELATIVE_LOCATION_BELOW_CENTER);
imageView_BelowCenter->setLayoutParameter(rp_BelowCenter);
ImageView* imageView_LeftCenter = ImageView::create("cocosui/switch-mask.png");
layout->addChild(imageView_LeftCenter);
rp_LeftCenter->setRelativetoWidgetName("rp_Center");
rp_LeftCenter->setAlign(RELATIVE_LOCATION_LEFT_OF_CENTER);
imageView_LeftCenter->setLayoutParameter(rp_LeftCenter);
ImageView* imageView_RightCenter = ImageView::create("cocosui/switch-mask.png");
layout->addChild(imageView_RightCenter);
rp_RightCenter->setRelativetoWidgetName("rp_Center");
rp_RightCenter->setAlign(RELATIVE_LOCATION_RIGHT_OF_CENTER);
imageView_RightCenter->setLayoutParameter(rp_RightCenter);
2.11.UIScrollView
2.11.1 创建垂直滚动UI
// Create the scrollview by vertical
ui::ScrollView* scrollView = ui::ScrollView::create();
scrollView->setSize(Size(280.0f,150.0f));
Size backgroundSize = background->getContentSize();
scrollView->setPosition(Point((widgetSize.width - backgroundSize.width) / 2.0f +
(backgroundSize.width - scrollView->getSize().width) / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> (widgetSize.height - backgroundSize.height) / 2.0f +
(backgroundSize.height - scrollView->getSize().height) / 2.0f));
_uiLayer->addChild(scrollView);
float innerWidth = scrollView->getSize().width;
float innerHeight = scrollView->getSize().height + imageView->getSize().height;
scrollView->setInnerContainerSize(Size(innerWidth,innerHeight));
button->setPosition(Point(innerWidth / 2.0f,scrollView->getInnerContainerSize().height - button->getSize().height / 2.0f));
scrollView->addChild(button);
titleButton->setPosition(Point(innerWidth / 2.0f,button->getBottomInParent() - button->getSize().height));
scrollView->addChild(titleButton);
button_scale9->setPosition(Point(innerWidth / 2.0f,titleButton->getBottomInParent() - titleButton->getSize().height));
scrollView->addChild(button_scale9);
imageView->setPosition(Point(innerWidth / 2.0f,imageView->getSize().height / 2.0f));
scrollView->addChild(imageView);
2.11.2
// Create the scrollview by horizontal
scrollView->setBounceEnabled(true);
scrollView->setDirection(SCROLLVIEW_DIR_HORIZONTAL);
scrollView->setInnerContainerSize(scrollView->getSize());
(backgroundSize.width - scrollView->getSize().width) / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> (widgetSize.height - backgroundSize.height) / 2.0f +
(backgroundSize.height - scrollView->getSize().height) / 2.0f));
float innerWidth = scrollView->getSize().width + imageView->getSize().width;
float innerHeight = scrollView->getSize().height;
scrollView->getInnerContainerSize().height - button->getSize().height / 2.0f));
titleButton->setPosition(Point(button->getRightInParent() + button->getSize().width / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> button->getBottomInParent() - button->getSize().height / 2.0f));
button_scale9->setPosition(Point(titleButton->getRightInParent() + titleButton->getSize().width / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> titleButton->getBottomInParent() - titleButton->getSize().height / 2.0f));
scrollView->addChild(button_scale9);

imageView->setPosition(Point(innerWidth - imageView->getSize().width / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> button_scale9->getBottomInParent() - button_scale9->getSize().height / 2.0f));
scrollView->addChild(imageView);
2.11.3
// Create the dragpanel
scrollView->setDirection(SCROLLVIEW_DIR_BOTH);
scrollView->setTouchEnabled(true);
scrollView->setBounceEnabled(true);//反弹
scrollView->setBackGroundImageScale9Enabled(true);
scrollView->setBackGroundImage("cocosui/green_edit.png");
scrollView->setSize(Size(210,122.5));
ImageView* imageView = ImageView::create("Hello.png");
scrollView->addChild(imageView);
scrollView->setInnerContainerSize(imageView->getContentSize());
Size innerSize = scrollView->getInnerContainerSize();
imageView->setPosition(Point(innerSize.width / 2.0f,innerSize.height / 2.0f));
2.11.4
ui::ScrollView* sc = ui::ScrollView::create();
sc->setBackGroundColor(Color3B::GREEN);
sc->setBackGroundColorType(LAYOUT_COLOR_SOLID);
sc->setDirection(SCROLLVIEW_DIR_BOTH);
sc->setInnerContainerSize(Size(480,320));
sc->setSize(Size(100,100));
sc->setPosition(Point((widgetSize.width - backgroundSize.width) / 2.0f +
(backgroundSize.width - sc->getSize().width) / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> (backgroundSize.height - sc->getSize().height) / 2.0f));
//减速
sc->scrollToPercentBothDirection(Point(50,50),1,true);
ImageView* iv = ImageView::create("cocosui/Hello.png");
iv->setPosition(Point(240,51); font-family:Arial; font-size:14px; line-height:26px"> sc->addChild(iv);
_uiLayer->addChild(sc);
2.12.UIPageView
// Create the page view
PageView* pageView = PageView::create();
pageView->setSize(Size(240.0f,130.0f));
pageView->setPosition(Point((widgetSize.width - backgroundSize.width) / 2.0f +
(backgroundSize.width - pageView->getSize().width) / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> (backgroundSize.height - pageView->getSize().height) / 2.0f));
for (int i = 0; i < 3; ++i)
Layout* layout = Layout::create();
layout->setSize(Size(240.0f,51); font-family:Arial; font-size:14px; line-height:26px"> ImageView* imageView = ImageView::create("cocosui/scrollviewbg.png");
imageView->setScale9Enabled(true);
imageView->setSize(Size(240,130));
imageView->setPosition(Point(layout->getSize().width / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> layout->addChild(imageView);
Text* label = Text::create(StringUtils::format("page %d",(i+1)),51); font-family:Arial; font-size:14px; line-height:26px"> label->setColor(Color3B(192,51); font-family:Arial; font-size:14px; line-height:26px"> label->setPosition(Point(layout->getSize().width / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> layout->addChild(label);
pageView->addPage(layout);
pageView->addEventListenerPageView(this,pagevieweventselector(UIPageViewTest::pageViewEvent));
_uiLayer->addChild(pageView);
2.12.2
void UIPageViewTest::pageViewEvent(Ref *pSender,PageViewEventType type)
case PAGEVIEW_EVENT_TURNING:
PageView* pageView = dynamic_cast<PageView*>(pSender);
_displayValueLabel->setText(CCString::createWithFormat("page = %ld",pageView->getCurPageIndex() + 1)->getCString());
}

2.13.UIListView
2.13.1
// create list view ex data
_array = Array::create();
CC_SAFE_RETAIN(_array);
for (int i = 0; i < 20; ++i)
__String* ccstr = __String::createWithFormat("listview_item_%d",i);
_array->addobject(ccstr);
// Create the list view ex
ListView* listView = ListView::create();
// set list view ex direction
listView->setDirection(SCROLLVIEW_DIR_VERTICAL);
listView->setTouchEnabled(true);
listView->setBounceEnabled(true);
listView->setBackGroundImage("cocosui/green_edit.png");
listView->setBackGroundImageScale9Enabled(true);
listView->setSize(Size(240,51); font-family:Arial; font-size:14px; line-height:26px"> listView->setPosition(Point((widgetSize.width - backgroundSize.width) / 2.0f +
(backgroundSize.width - listView->getSize().width) / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> (backgroundSize.height - listView->getSize().height) / 2.0f));
listView->addEventListenerListView(this,listvieweventselector(UIListViewTest_Vertical::selectedItemEvent));
_uiLayer->addChild(listView);
// create model
Button* default_button = Button::create("cocosui/backtotoppressed.png",51); font-family:Arial; font-size:14px; line-height:26px"> default_button->setName("Title Button");
Layout* default_item = Layout::create();
default_item->setTouchEnabled(true);
default_item->setSize(default_button->getSize());
default_button->setPosition(Point(default_item->getSize().width / 2.0f,51); font-family:Arial; font-size:14px; line-height:26px"> default_item->getSize().height / 2.0f));
default_item->addChild(default_button);
// set model
listView->setItemmodel(default_item);
// add default item
ssize_t count = _array->count();
for (int i = 0; i < count / 4; ++i)
listView->pushBackDefaultItem();
// insert default item
listView->insertDefaultItem(0);
// add custom item
Button* custom_button = Button::create("cocosui/button.png",51); font-family:Arial; font-size:14px; line-height:26px"> custom_button->setName("Title Button");
custom_button->setScale9Enabled(true);
custom_button->setSize(default_button->getSize());
Layout *custom_item = Layout::create();
custom_item->setSize(custom_button->getSize());
custom_button->setPosition(Point(custom_item->getSize().width / 2.0f,custom_item->getSize().height / 2.0f));
custom_item->addChild(custom_button);
listView->pushBackCustomItem(custom_item);
// insert custom item
Vector<Widget*>& items = listView->getItems();
ssize_t items_count = items.size();
listView->insertCustomItem(custom_item,items_count);
// set item data
items_count = items.size();
for (int i = 0; i < items_count; ++i)
Widget* item = listView->getItem(i);
Button* button = static_cast<Button*>(item->getChildByName("Title Button"));
ssize_t index = listView->getIndex(item);
button->setTitleText(static_cast<__String*>(_array->getobjectAtIndex(index))->getCString());
// remove last item
listView->removeLastItem();
// remove item by index
listView->removeItem(items_count - 1);
// set all items layout gravity
listView->setGravity(LISTVIEW_GraviTY_CENTER_VERTICAL);
// set items margin
listView->setItemsMargin(2.0f);
2.13.2
void UIListViewTest_Vertical::selectedItemEvent(Ref *pSender,ListViewEventType type)
case cocos2d::ui::LISTVIEW_ONSELECTEDITEM_START:
ListView* listView = static_cast<ListView*>(pSender);
CC_UNUSED_ParaM(listView);
cclOG("select child start index = %ld",listView->getCurSelectedindex());
case cocos2d::ui::LISTVIEW_ONSELECTEDITEM_END:
cclOG("select child end index = %ld",51); font-family:Arial; font-size:14px; line-height:26px">2.13.3
listView->setDirection(SCROLLVIEW_DIR_HORIZONTAL);
2.14.UIRichText
_richText = RichText::create();
_richText->ignoreContentAdaptWithSize(false);
_richText->setSize(Size(100,51); font-family:Arial; font-size:14px; line-height:26px"> RichElementText* re1 = RichElementText::create(1,Color3B::WHITE,255,"This color is white. ","Helvetica",10);
RichElementText* re2 = RichElementText::create(2,Color3B::YELLOW,"And this is yellow. ",51); font-family:Arial; font-size:14px; line-height:26px"> RichElementText* re3 = RichElementText::create(3,Color3B::BLUE,"This one is blue. ",51); font-family:Arial; font-size:14px; line-height:26px"> RichElementText* re4 = RichElementText::create(4,Color3B::GREEN,"And green. ",51); font-family:Arial; font-size:14px; line-height:26px"> RichElementText* re5 = RichElementText::create(5,Color3B::RED,"Last one is red ",51); font-family:Arial; font-size:14px; line-height:26px"> RichElementimage* reimg = RichElementimage::create(6,"cocosui/sliderballnormal.png");
cocostudio::ArmatureDataManager::getInstance()->addArmatureFileInfo("cocosui/100/100.ExportJson");
cocostudio::Armature *pAr = cocostudio::Armature::create("100");
pAr->getAnimation()->play("Animation1");
RichElementCustomNode* recustom = RichElementCustomNode::create(1,pAr);
RichElementText* re6 = RichElementText::create(7,Color3B::ORANGE,"Have fun!! ",51); font-family:Arial; font-size:14px; line-height:26px"> _richText->pushBackElement(re1);
_richText->insertElement(re2,1);
_richText->pushBackElement(re3);
_richText->pushBackElement(re4);
_richText->pushBackElement(re5);
_richText->insertElement(reimg,2);
_richText->pushBackElement(recustom);
_richText->pushBackElement(re6);
_richText->setPosition(Point(widgetSize.width / 2,widgetSize.height / 2));
_richText->setLocalZOrder(10);
_widget->addChild(_richText);
三、在Cocosstudio的UI编辑器中获取组件对象
3.1使用UI编辑器
3.2导出UI文件
3.3在Cocos2d-x中加载UI文件
3.4获取UI层中的子对象
四、UI组件详解
4.1使用UIButton
4.1.1 载入UIButton文件
bool UIButtonTest_Editor::init()
if (UIScene_Editor::init())
_layout = static_cast<Layout*>(cocostudio::GUIReader::getInstance()->widgetFromJsonFile("cocosui/UIEditorTest/UIButton_Editor/UIButton_Editor_1.json"));
_touchGroup->addChild(_layout);
Size screenSize = CCDirector::getInstance()->getWinSize();
Size rootSize = _layout->getSize();
_touchGroup->setPosition(Point((screenSize.width - rootSize.width) / 2,51); font-family:Arial; font-size:14px; line-height:26px"> (screenSize.height - rootSize.height) / 2));
Layout* root = static_cast<Layout*>(_layout->getChildByName("root_Panel"));
Text* back_label = static_cast<Text*>(Helper::seekWidgetByName(root,"back"));
back_label->addTouchEventListener(this,toucheventselector(UIScene_Editor::toGUIEditorTestScene));
_sceneTitle = static_cast<Text*>(Helper::seekWidgetByName(root,"UItest"));
Button* button = static_cast<Button*>(Helper::seekWidgetByName(root,"Button_123"));
Button* title_button = static_cast<Button*>(Helper::seekWidgetByName(root,"Button_126"));
title_button->addTouchEventListener(this,51); font-family:Arial; font-size:14px; line-height:26px"> Button* scale9_button = static_cast<Button*>(Helper::seekWidgetByName(root,"Button_129"));
scale9_button->addTouchEventListener(this,51); font-family:Arial; font-size:14px; line-height:26px"> _displayValueLabel = Text::create();
_displayValueLabel->setFontName("fonts/Marker Felt.ttf");
_displayValueLabel->setFontSize(30);
_displayValueLabel->setText("No event");
_displayValueLabel->setPosition(Point(_layout->getSize().width / 2,51); font-family:Arial; font-size:14px; line-height:26px"> _layout->getSize().height - _displayValueLabel->getSize().height * 1.75f));
_touchGroup->addChild(_displayValueLabel);
return true;
return false;
void UIButtonTest_Editor::touchEvent(Ref *pSender,51); font-family:Arial; font-size:14px; line-height:26px"> case TOUCH_EVENT_BEGAN:
_displayValueLabel->setText("Touch Down");
_displayValueLabel->setText("Touch Moved");
_displayValueLabel->setText("Touch Ended");
_displayValueLabel->setText("Touch Canceled");
}

Cocos2d-x 3.0final 终结者系列教程23CocosStudio UI组件使用大全Cocos2d-x3.2使用的更多相关文章

  1. 使用Html5多媒体实现微信语音功能

    这篇文章主要介绍了使用Html5多媒体实现微信语音功能,需要的朋友可以参考下

  2. HTML5 canvas 瀑布流文字效果的示例代码

    这篇文章主要介绍了HTML5 canvas 瀑布流文字效果的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. HTML5 input新增type属性color颜色拾取器的实例代码

    type 属性规定 input 元素的类型。本文较详细的给大家介绍了HTML5 input新增type属性color颜色拾取器的实例代码,感兴趣的朋友跟随脚本之家小编一起看看吧

  4. amazeui模态框弹出后立马消失并刷新页面

    这篇文章主要介绍了amazeui模态框弹出后立马消失并刷新页面,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. 移动HTML5前端框架—MUI的使用

    这篇文章主要介绍了移动HTML5前端框架—MUI的使用的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  6. 详解HTML5中CSS外观属性

    这篇文章主要介绍了HTML5中CSS外观属性的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,,需要的朋友可以参考下

  7. HTML5 WebSocket实现点对点聊天的示例代码

    这篇文章主要介绍了HTML5 WebSocket实现点对点聊天的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  8. Html5自定义字体解决方法

    这篇文章主要介绍了Html5自定义字体解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  9. 吃透移动端 Html5 响应式布局

    这篇文章主要介绍了吃透移动端 Html5 响应式布局,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  10. web字体加载方案优化小结

    这篇文章主要介绍了web字体加载方案优化小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部