理论基础

一个包含控件的容器。 子节点可以根据布局类型重新排序,它还可以开启剪裁,设置背景图像和颜色。继承自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学习笔记的更多相关文章

  1. cocos代码研究(1)Node学习笔记

    理论部分 Node类继承自Ref类,是cocos框架中基础底层的一个封装类,与画面渲染相关的类一般都是继承自该类,例如Scene,Layer,Sprite,Sprite3D,Label,SpriteB ...

  2. cocos代码研究(5)Action学习笔记

    理论部分 Action类也是cocos核心基础类之一,在游戏中起着非常重要的作用,继承自Ref,被 FiniteTimeAction(有限时间动作), Follow , 以及 Speed 继承. 有限 ...

  3. cocos代码研究(2)Label学习笔记

    理论部分 Label类继承自Node类,中文翻译文字与字体,通常在应用开发中为模块作为提示和描述的作用,主要有3中不同的创建方式. 1.通过ttf字体包创建,通过指定本地已有的ttf格式的字体文件,创 ...

  4. cocos代码研究(1)sprite学习笔记

    各种方法创建Sprite和Animate //图片创建法 参数一:图片资源路径 参数二:Rect选区 auto sprite = Sprite::create(, )); addChild(sprit ...

  5. cocos代码研究(2)Layer学习笔记

    auto layer = Layer::create(); /*************华丽分割线*************/ auto layer = LayerColor::create(Colo ...

  6. cocos代码研究(25)Widget子类PageView学习笔记

    基础理论 ListView控件是一个显示滚动项目列表的视图组. 列表项是通过使用addChild或insertDefaultItem插入到列表中的,继承自ScrollView. 代码实践 static ...

  7. cocos代码研究(24)Widget子类PageView学习笔记

    理论基础 PageView类又称Layout的管理器,可以让用户在多个Layout之间左右或者上下切换显示,继承自 Layout . 代码实践 static PageView * create ()创 ...

  8. cocos代码研究(17)Widget子类RadioButtonGroup学习笔记

    理论基础 RadioButtonGroup可以把指定的单选按钮组织起来, 形成一个组, 使它们彼此交互. 在一个RadioButtonGroup, 有且只有一个或者没有RadioButton可以处于被 ...

  9. cocos代码研究(16)Widget子类RadioButton学习笔记

    理论基础 RadioButton是一种特定类型的两状态按钮,它与复选框相似.它可以 和RadioButtonGroup一起使用,形成一个"组".继承自AbstractCheckBu ...

随机推荐

  1. Mysql综合案例

    Mysql综合案例 考核要点:创建数据表.单表查询.多表查询 已知,有一个学生表student和一个分数表score,请按要求对这两个表进行操作.student表和score分数表的表结构分别如表1- ...

  2. PHP-003

    PHP函数大全(转) usleep() 函数延迟代码执行若干微秒.unpack() 函数从二进制字符串对数据进行解包.uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.time_sl ...

  3. H5 readfile 多图片预览

    /** * 多图片前端预览 * @author Tiac */ function preView(_this, offset){ let max_nums = 10;//单位 s let max_si ...

  4. 使用命令wsimport构建WebService客户端

    原文:http://www.cnblogs.com/ningvsban/p/3760085.html wsimport命令介绍 在JDK的bin文件夹中,有一个wsimport.exe,这个工具依据w ...

  5. apache MINA之心跳协议运用

    摘要 心跳协议,对基于CS模式的系统开发来说是一种比较常见与有效的连接检测方式,最近在用MINA框架,原本自己写了一个心跳协议实现,后来突然发现MINA本身带有这样一个心跳实现,感于对框架的小小崇拜, ...

  6. 使用C#语言实现一些功能

    今天由于是周六,所以就没讲课啦,于是我就仔细看啦几道还没掌握的题,然后总结啦一下. 一.三级联动 像这个三级联动吧,感觉在做网站时间肯定会用到啦,但是那时间肯定不会是这样子做的啦,不可能把所有的省市区 ...

  7. MongoDB复制集原理

    版权声明:本文由孔德雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/136 来源:腾云阁 https://www.qclo ...

  8. Module 'null' not found异常解决办法

    百度原因:是因为在   /WEB_INF/web.xml文件中   <servlet> <servlet-name>ActionServlet</servlet-name ...

  9. 【BZOJ2007】[Noi2010]海拔 对偶图最短路

    [BZOJ2007][Noi2010]海拔 Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看 ...

  10. 批量远程执行linux服务器程序--基于pxpect(多进程、记日志版)

    #!/usr/bin/python '''Created on 2015-06-09@author: Administrator''' import pexpect import os,sys fro ...