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 ...
随机推荐
- JavaScript------生成Guid方法
转载: http://blog.csdn.net/limm33/article/details/51536529 代码: function newGuid() { var guid = "& ...
- javascript--枚举算法实现
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 超全面的JavaWeb笔记day03<JS对象&函数>
1.js的String对象(****) 2.js的Array对象 (****) 3.js的Date对象 (****) 获取当前的月 0-11,想要得到准确的月 +1 获取星期时候,星期日是 0 4.j ...
- ftp简单命令
1.连接ftp ftp 192.168.10.15 进去后输入用户名 ,然后再输入密码,就这样登陆成功了,你会看到 ftp> 2.进入ftp后,你对目录需要切换操作.和linux一样的命令.cd ...
- JavaScript作用域原理——预编译
JavaScript是一种脚本语言, 它的执行过程, 是一种翻译执行的过程.并且JavaScript是有预编译过程的,在执行每一段脚本代码之前, 都会首先处理var关键字和function定义式(函数 ...
- 开源免费天气预报接口API以及全国所有地区代码[值得收藏]
国家气象局提供的天气预报接口 接口地址: http://www.weather.com.cn/data/sk/101010100.html http://www.weather.com.cn/data ...
- MQTT的学习研究(十二) MQTT moquette 的 Future API 消息发布订阅的实现
MQTT moquette 的Server发布主题 package com.etrip.mqtt.future; import java.net.URISyntaxException; import ...
- CSS-项目中遇到IE兼容问题,处理随笔
总是忘记给ie做特殊样式处理,以前打游击,不做也就算了,以后可不行,得对自己的“孩子”负责.. 一.先说IE老大的兼容 知道了一些常用的css属性兼容方法确实可以解决问题, 但我不知道我自己的ieTe ...
- 【Android N 7】使用量统计usagestats
Android N 7.1.1 高通 1. /data/system/usagestats/0 2. 每天使用量统计 /data/system/usagestats/0/daily 查看数值: cat ...
- scss的安装使用
Ruby的安装 如果是Window系统,请打开:http://rubyinstaller.org/downloads/ ,下载当前稳定版本的exe文件.界面如下所示: Step(2): 接下来,在系统 ...