理论基础

一个包含控件的容器。 子节点可以根据布局类型重新排序,它还可以开启剪裁,设置背景图像和颜色。继承自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存储引擎 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存 ...

  2. Qt监控Access数据库

    配置文件setup.ini内容 [General] DBFilePath=C:/Users/WangGang/Desktop/Database1.accdb DBUserName= DBPasswor ...

  3. Binary XML file line #17<vector> tag requires viewportWidth > 0

    Android高版本对比低版本 在我的项目中更改成 //buildToolsVersion '21.1.2'buildToolsVersion '24.0.1' // 24.0.1 必须用这个否则报B ...

  4. Effective C++ —— 构造/析构/赋值运算(二)

    条款05 : 了解C++默默编写并调用哪些函数 编译器可以暗自为class创建default构造函数.copy构造函数.copy assignment操作符,以及析构函数. 1. default构造函 ...

  5. JAVA中替换字符的方法replace和replaceAll 区别

    replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSe ...

  6. django restframework 教程之Serialization(序列化)

    介绍 本教程将会通过创建一个简单的粘贴代码项目,突出显示WebAPI,过程中,会介绍组成REST框架的各种组件,让你全面了解如何配合使用. 环境设置 建议使用virtualenv建立新的虚拟环境,确保 ...

  7. Django restframwork

    REST介绍 全称Representational State Transfer,即表现层状态转换,如果一个架构符合REST原则,我们就称他为Restfull架构,其主要包括如下方面: 资源Resou ...

  8. JS-随机div颜色

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. Codeforces Round #375 (Div. 2)E. One-Way Reform

    题目链接:传送门 题目大意:一副无向图,要求你给边定向(变为有向图),使出度等于入度的点最多,输出有多少 个点,并且输出定向后的边(前为起点,后为终点) 题目思路:欧拉路 我们这样考虑,先考虑无向图的 ...

  10. 【转】stm32中断嵌套全攻略

    断断续续学习STM32一学期了,时间过的好快,现在对STM32F103系列单片机的中断嵌套及外部中断做一个总结,全当学习笔记.废话不多说,ARM公司的Cortex-m3 内核,支持256个中断,其中包 ...