cocos代码研究(22)Widget子类Layout学习笔记
理论基础
一个包含控件的容器。 子节点可以根据布局类型重新排序,它还可以开启剪裁,设置背景图像和颜色。继承自Widget,以及LayoutProtocol。
被 HBox, PageView, RelativeBox, ScrollView , 以及 VBox 继承。
主要有四种类型的布局:
- 绝对布局:这个默认的布局类型、子元素按照绝对位置排列。
- 水平布局:子元素水平排列。
- 垂直布局:子元素垂直排列。
- 相对布局:子元素相对于一定的规则排列。
代码实践
static Layout * create ()
创建一个空的layout。 //和背景图像,颜色,透明度有关
void setBackGroundImage (const std::string &fileName, //图像文件路径。
TextureResType texType=TextureResType::LOCAL)
设置layout的背景图像。 const Rect & getBackGroundImageCapInsets () const
查询背景图像的capInsets。 void setBackGroundColorType (BackGroundColorType type)
设置布局的背景颜色类型 BackGroundColorType getBackGroundColorType () const
查询布局的背景颜色类型。 void setBackGroundColor (const Color3B &color)
设置layout的背景颜色 仅当颜色类型为BackGroundColorType::SOLID的时候,才会影响Layout const Color3B & getBackGroundColor () const
查询布局的背景颜色。 void setBackGroundColor (const Color3B &startColor, const Color3B &endColor)
为布局设置开始和结束的背景颜色。 该设置只当布局的颜色类型是BackGroundColorType::GRADIENT时生效 //与渐变有关
const Color3B & getBackGroundStartColor () const
获取渐变背景颜色开始的值。 const Color3B & getBackGroundEndColor () const
获取渐变背景颜色的结束值。 void setBackGroundColorOpacity (GLubyte opacity)
设置布局的背景颜色不透明度。 GLubyte getBackGroundColorOpacity () const
获取布局的背景颜色不透明度。 void setBackGroundColorVector (const Vec2 &vector)
设置布局的背景颜色矢量。 该设置只当布局的颜色类型是BackGroundColorType::GRADIENT时生效 const Vec2 & getBackGroundColorVector () const
获取layout的背景颜色向量。 void setBackGroundImageColor (const Color3B &color)
设置layout背景图像的颜色。 void setBackGroundImageOpacity (GLubyte opacity)
设置背景图像的不透明度。 const Color3B & getBackGroundImageColor () const
得到layout的背景图像颜色。 GLubyte getBackGroundImageOpacity () const
获取layout的背景图像不透明度。 void removeBackGroundImage ()
删除layout的背景图像。 const Size & getBackGroundImageTextureSize () const
获取背景图像纹理大小。 virtual void setClippingEnabled (bool enabled)
切换布局剪裁。 如果你需要裁剪,你需要传递true给这个函数。 void setClippingType (ClippingType type)
改变layout的剪裁类型。 在默认情况下,剪切类型是“ClippingType:STENCIL”。 ClippingType getClippingType () const
virtual bool isClippingEnabled () const
获取layout是否开启了剪裁。 virtual std::string getDescription () const override
返回组件的类名 virtual void setLayoutType (Type type)
改变布局类型。 virtual Type getLayoutType () const
查询layout类型。 virtual void forceDoLayout ()
强制刷新控件的布局 void requestDoLayout ()
请求刷新控件的布局 void setLoopFocus (bool loop)
如果一个布局是循环获取焦点,这意味着焦点在layout中移动 //和scale9技术有关
void setBackGroundImageCapInsets (const Rect &capInsets)
设置layout背景的capInsets,它只在开启scale9后影响背景图的渲染。 void setBackGroundImageScale9Enabled (bool enabled)
开启背景图像scale9的渲染模式。 bool isBackGroundImageScale9Enabled () const
查询背景图像scale9启用状态。
实例:
Layout* root = static_cast<Layout*>(_uiLayer->getChildByTag());
Layout* background = static_cast<Layout*>(root->getChildByName("background_Panel"));
// Create the layout with color render
Layout* layout = Layout::create();
layout->setBackGroundColorType(Layout::BackGroundColorType::SOLID);
layout->setBackGroundColor(Color3B(, , ));
layout->setContentSize(Size(, ));
Size backgroundSize = background->getContentSize();
layout->setPosition(Vec2((widgetSize.width - backgroundSize.width) / 2.0f +
(backgroundSize.width - layout->getContentSize().width) / 2.0f,
(widgetSize.height - backgroundSize.height) / 2.0f +
(backgroundSize.height - layout->getContentSize().height) / 2.0f));
_uiLayer->addChild(layout);
cocos代码研究(22)Widget子类Layout学习笔记的更多相关文章
- cocos代码研究(1)Node学习笔记
理论部分 Node类继承自Ref类,是cocos框架中基础底层的一个封装类,与画面渲染相关的类一般都是继承自该类,例如Scene,Layer,Sprite,Sprite3D,Label,SpriteB ...
- cocos代码研究(5)Action学习笔记
理论部分 Action类也是cocos核心基础类之一,在游戏中起着非常重要的作用,继承自Ref,被 FiniteTimeAction(有限时间动作), Follow , 以及 Speed 继承. 有限 ...
- cocos代码研究(2)Label学习笔记
理论部分 Label类继承自Node类,中文翻译文字与字体,通常在应用开发中为模块作为提示和描述的作用,主要有3中不同的创建方式. 1.通过ttf字体包创建,通过指定本地已有的ttf格式的字体文件,创 ...
- cocos代码研究(1)sprite学习笔记
各种方法创建Sprite和Animate //图片创建法 参数一:图片资源路径 参数二:Rect选区 auto sprite = Sprite::create(, )); addChild(sprit ...
- cocos代码研究(2)Layer学习笔记
auto layer = Layer::create(); /*************华丽分割线*************/ auto layer = LayerColor::create(Colo ...
- cocos代码研究(25)Widget子类PageView学习笔记
基础理论 ListView控件是一个显示滚动项目列表的视图组. 列表项是通过使用addChild或insertDefaultItem插入到列表中的,继承自ScrollView. 代码实践 static ...
- cocos代码研究(24)Widget子类PageView学习笔记
理论基础 PageView类又称Layout的管理器,可以让用户在多个Layout之间左右或者上下切换显示,继承自 Layout . 代码实践 static PageView * create ()创 ...
- cocos代码研究(17)Widget子类RadioButtonGroup学习笔记
理论基础 RadioButtonGroup可以把指定的单选按钮组织起来, 形成一个组, 使它们彼此交互. 在一个RadioButtonGroup, 有且只有一个或者没有RadioButton可以处于被 ...
- cocos代码研究(16)Widget子类RadioButton学习笔记
理论基础 RadioButton是一种特定类型的两状态按钮,它与复选框相似.它可以 和RadioButtonGroup一起使用,形成一个"组".继承自AbstractCheckBu ...
随机推荐
- .Net WebAPI文档自动化
1.在VS2015中右键选择工程: 2.点击NuGet程序包: 3.输入Swagger在线搜索: 4.安装:Swagger.Net.UI和Swashbuckle包: 5.打开SwaggerNet.cs ...
- ajax异步加载回跳定位
1)首先,问题是这样的:page1在一个滚动到页面底部加载更新的函数(功能),当页面滚动了第二页(或更多页)时,点击链接跳转到了其他页面(page2),在page2有返回按钮,当从page2返回pag ...
- centos6 安装 directAdmin
注:教程参考 https://bbs.aliyun.com/read/159390.html 这篇文章来操作就可以了 需要注意的地方是 1)directAdmin 需要一个纯净的环境,安装direct ...
- js array.filter实例(数组去重)
语法: 循环对数组中的元素调用callback函数, 如果返回true 保留,如果返回false 过滤掉, 返回新数组,老数组不变 var new_array = source_array.filt ...
- mysql增删改查基本语句
mysql的增删改查属于基本操作,又被简称CRUD,其中删用的较少,毕竟这个功能给用户是是非常危险的,就是客户删除的数据也没有真正的删除,其中查询是十分常用的. 1 mysql数据库增加:create ...
- Sql中将字符串按分割符拆分
创建函数 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO Create FUNCTION [dbo].[F_Split] ( @SplitString ...
- HDU 4462Scaring the Birds(枚举所有状态)
Scaring the Birds Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- JQuery事件e参数的方法preventDefault()取消默认行为
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- Java初学者笔记二:关于类的常见知识点汇总
一.Java的类: Java的类是Java的基本概念了,基本的定义语法我就不提了,自己也不会忘了的,下面分成几个模块介绍: 1.Java的类定义时候的修饰符 2.Java的类的继承与派生 二.Java ...
- 【BZOJ3275】Number 最小割
[BZOJ3275]Number Description 有N个正整数,需要从中选出一些数,使这些数的和最大.若两个数a,b同时满足以下条件,则a,b不能同时被选1:存在正整数C,使a*a+b*b=c ...