理论基础

一个包含控件的容器。 子节点可以根据布局类型重新排序,它还可以开启剪裁,设置背景图像和颜色。继承自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. JBPM4.4_jBPM4.4应用(与Spring集成&自行控制事务等)

    1. jBPM4.4应用 1.1. 与Spring集成(jBPM4.4 Developers Guide, Chapter 17. Spring Integration) 1.1.1. 在jbpm.c ...

  2. Android中文API

    Android中文API http://www.android-doc.com/index.html

  3. Android-Gallery GridView ImageSwitcher 使用

    http://liangruijun.blog.51cto.com/3061169/647355/ http://blog.csdn.net/wantianwen/article/details/23 ...

  4. ionic creator(ionic生成器)

    用来生成前端 html 还是挺方便的(接口数据另算),弄好就可以直接下载 https://creator.ionic.io/app/dashboard/projects

  5. Hash表(hash table ,又名散列表)

    直接进去主题好了. 什么是哈希表? 哈希表(Hash table,也叫散列表),是根据key而直接进行访问的数据结构.也就是说,它通过把key映射到表中一个位置来访问记录,以加快查找的速度.这个映射函 ...

  6. vs2008设置dll、lib库的输出路径

    vs2008中,有些项目上的功能是要生产库文件给其他项目调用的,以下是一些设置库文件(x.dll和x.lib)输出路径的方法. 设置x.dll 输出路径方法是在右键项目的"属性"- ...

  7. office2010如何使用excel冻结窗格

    当我们在制作一个Excel表格时,如果列数较多,行数也较多时,一旦向下滚屏,则上面的标题行也跟着滚动,在处理数据时往往难以分清各列数据对应的标题,事实上利用"冻结窗格"功能可以很好 ...

  8. [HNOI2004] 打砖块

    1292. [HNOI2004] 打砖块 ★★   输入文件:brike.in   输出文件:brike.out   简单对比时间限制:1 s   内存限制:128 MB [题目描述] 在一个凹槽中放 ...

  9. 关于OS命令注入的闭合问题

    1.在Windows下 windows下非常好办,只需要&肯定可以执行: C:\Users\xxx\Desktop>aaaa | 127.0.0.1 'aaaa' 不是内部或外部命令,也 ...

  10. IOS中使用轻量级数据库

    IOS中使用轻量级数据库 目录 概述 IOS中的轻量级数据库 sqlite的方法 数据库的实用操作 第三方类库 FMDatabase 概述 IOS中的轻量级数据库 sqlite的方法 sqlite3 ...