理论基础

Widget类,所有UI控件的基类。 这类继承自ProtectedNode和LayoutParameterProtocol。 如果你想实现自己的UI控件,你应该继承这个类。

被 VideoPlayer, WebView, AbstractCheckButton, Button, EditBox, ImageView, Layout, LoadingBar, RadioButtonGroup, RichText, Slider, Text, TextAtlas, TextBMFont , 以及 TextField 继承。

代码部分

Public属性

enum FocusDirection
控件焦点方向。

enum PositionType
布局系统中的控件位置类型。

enum SizeType
布局系统中的控件尺寸类型。

enum TouchEventType
触摸事件类型。

enum TextureResType
纹理资源类型。 更多...

enum BrightStyle
控件的高亮属性。

typedef std::function< void(Ref *, Widget::TouchEventType)> ccWidgetTouchCallback
控件触摸事件回调。

typedef std::function< void(Ref *)> ccWidgetClickCallback
控件点击事件回调。

typedef std::function< void(Ref *, int)> ccWidgetEventCallback
控件用户定制事件回调。 它主要和Cocos Studio一起使用。

public方法

static Widget * create ()
创建并返回一个空的控件实例的指针。

Widget (void)
默认构造函数

virtual ~Widget ()
默认的析构函数

Widget * clone ()
创建一个新的控件拷贝。

void setActionTag (int tag)
设置动作的标签。

int getActionTag () const
获取动作标签。

//是否启用相关
virtual void setEnabled (bool enabled)
设置是否启用了控件

bool isEnabled () const
检查控件是否启用了。

//跟高亮有关
void setBright (bool bright)
设置控件是否高亮,默认值是true,若设置为false,则控件外观是暗的。

bool isBright () const
返回控件是否高亮

bool isHighlighted () const
获取是否高亮显示

void setBrightStyle (BrightStyle style)
设置控件的高亮风格。

void setHighlighted (bool hilight)
设置是否高亮显示

//与位置有关
void setPositionPercent (const Vec2 &percent)
设置控件在OpenGL坐标系中的百分比位置(x,y)

const Vec2 & getPositionPercent ()
获取控件在OpenGL坐标系中的百分比位置(x,y)

void setPositionType (PositionType type)
设置控件的位置类型

PositionType getPositionType () const
获取控件的位置类型

const Vec2 & getTouchStartPos () const
获取触点在控件被选中时的起始位置。

const Vec2 & getTouchBeganPosition () const
获取触点在控件被选中时的起始位置。

//与大小有关
virtual void setSize (const Size &size)
设置控件的尺寸

virtual void setContentSize (const Size &contentSize) override
设置控件的尺寸

virtual void setSizePercent (const Vec2 &percent)
设置控件的百分比尺寸

void setSizeType (SizeType type)
改变控件的尺寸类型。

SizeType getSizeType () const
获取控件的尺寸类型。

const Size & getSize () const
获取控件的尺寸

const Size & getCustomSize () const
获取用户定义的控件尺寸。

virtual const Size & getLayoutSize ()
获取控件尺寸。

const Vec2 & getSizePercent ()
获取控件的百分比尺寸。

bool isIgnoreContentAdaptWithSize () const
查询是否忽略用户定义的控件尺寸。

//有焦点有关
bool isFocused () const
查询控件是否拥有焦点。

void setFocused (bool focus)
切换控件是否拥有焦点。

bool isFocusEnabled () const
查询控件是否拥有焦点。

void setFocusEnabled (bool enable)
允许控件接受焦点。

void requestFocus ()
当调用这个方法时,控件会立即拥有焦点。

Widget * getCurrentFocusedWidget (bool isWidget)
获取当前拥有焦点的控件。 不管对什么控件对象调用这个方法,它将返回当前拥有焦点的控件。

Widget * getCurrentFocusedWidget () const
获取当前拥有焦点的控件。 不管对什么控件对象调用这个方法,它将返回当前拥有焦点的控件。

//与控件翻转有关
virtual void setFlippedX (bool flippedX)
设置控件是否应该水平翻转。

virtual bool isFlippedX () const
返回控件是否水平翻转。

virtual void setFlippedY (bool flippedY)
设置控件是否应垂直翻转。

virtual bool isFlippedY () const
返回控件是否垂直翻转。

//与缩放有关
virtual void setScaleX (float scaleX) override
设置节点的缩放(x)。

virtual void setScaleY (float scaleY) override
设置节点的缩放(y)。

virtual void setScale (float scale) override
设置节点的缩放(x,y,z).

virtual void setScale (float scalex, float scaley) override
设置节点的缩放(x,y).

virtual float getScaleX () const override
返回该节点的X轴的缩放因子。

virtual float getScaleY () const override
返回该节点的Y轴的缩放因子。

virtual float getScale () const override
得到该节点的缩放因子,当X轴和Y轴有相同的缩放因子时。

//与触摸事件有关
bool isTouchEnabled () const
获取触摸是否启用

virtual void setTouchEnabled (bool enabled)
设置是否响应触摸事件。

void addTouchEventListener (Ref *target, SEL_TouchEvent selector)
设置触摸事件的响应选择器和目标

void addTouchEventListener (const ccWidgetTouchCallback &callback)
设置触摸事件的回调函数。

void setPropagateTouchEvents (bool isPropagate)
允许控件的触摸事件向上传播到父节点,设置为false会阻止向上传播。

bool isPropagateTouchEvents () const
返回控件是否允许触摸事件传播到其父节点

void setSwallowTouches (bool swallow)
设置控件是否吞噬触摸事件。

bool isSwallowTouches () const
查询控件是否吞噬触摸事件。

virtual bool onTouchBegan (Touch *touch, Event *unusedEvent)
触摸事件开始时的回调函数。

virtual void onTouchMoved (Touch *touch, Event *unusedEvent)
触摸事件中触点移动时的回调函数。

virtual void onTouchEnded (Touch *touch, Event *unusedEvent)
触摸事件结束时的回调函数。

virtual void onTouchCancelled (Touch *touch, Event *unusedEvent)
触摸事件取消时的回调函数。

//与点击事件有关
void addClickEventListener (const ccWidgetClickCallback &callback)
设置一个点击事件的回调函数。

virtual void addCCSEventListener (const ccWidgetEventCallback &callback)
设置一个用于Cocos Studio事件处理的回调函数。

//与节点父子级有关
bool clippingParentAreaContainPoint (const Vec2 &pt)
检查一个位置点是否在父节点区域内。

virtual void visit (cocos2d::Renderer *renderer, const Mat4 &parentTransform, uint32_t parentFlags) override
遍历所有子节点,并且循环递归得发送它们的渲染指令。

float getLeftInParent ()
获取这个控件的左边界在父节点坐标系中的位置。

float getLeftBoundary () const
获取这个控件的左边界在父节点坐标系中的位置。

float getBottomInParent ()
获取这个控件的底边界在父节点坐标系中的位置。

float getBottomBoundary () const
获取这个控件的底边界在父节点坐标系中的位置。

float getRightInParent ()
获取这个控件的右边界在父节点坐标系中的位置。

float getRightBoundary () const
获取这个控件的右边界在父节点坐标系中的位置。

float getTopInParent ()
获取这个控件的上边界在父节点坐标系中的位置。

float getTopBoundary () const
获取这个控件的上边界在父节点坐标系中的位置。

virtual bool hitTest (const Vec2 &pt, const Camera *camera, Vec3 *p) const
检查一个点是否在控件的内容空间里。 这个函数是用于检测控件的触摸响应区域。

void setLayoutParameter (LayoutParameter *parameter)
給控件设置一个布局参数(LayoutParameter)。

LayoutParameter * getLayoutParameter () const override
获取控件的布局参数(LayoutParameter)。

LayoutParameter * getLayoutParameter (LayoutParameter::Type type)
根据类型获取控件的布局参数(LayoutParameter)。

virtual void ignoreContentAdaptWithSize (bool ignore)
设置是否忽略用户定义通过setContentSize设定的控件尺寸。 设置为true将忽略用户定义的尺寸,意味着控件尺寸永远等于getVirtualRendererSize的返回值。

Vec2 getWorldPosition () const
获取在世界空间中控件的位置。

virtual Node * getVirtualRenderer ()
控件的内部渲染节点。 例如,一个按钮的虚拟渲染节点是它的纹理节点。

virtual Size getVirtualRendererSize () const
获取虚拟渲染节点的尺寸。

virtual std::string getDescription () const override
返回控件类的描述。

void updateSizeAndPosition ()
递归地更新所有子节点的尺寸和位置。

void updateSizeAndPosition (const Size &parentSize)
递归地更新所有子节点的尺寸和位置。

virtual Widget * findNextFocusedWidget (FocusDirection direction, Widget *current)
当一个控件在一个布局中,您可以调用这个方法得到在指定的方向上的下一个控件,方向分为上下左右。 如果控件没有在布局中,它将返回自身

void setUnifySizeEnabled (bool enable)
设置是否使用归一化的尺寸。

bool isUnifySizeEnabled () const
查询是否使用归一化的尺寸。

void setCallbackName (const std::string &callbackName)
设置回调函数的名称。

const std::string & getCallbackName () const
查询回调函数的名称。

void setCallbackType (const std::string &callbackType)
设置回调函数类型。

const std::string & getCallbackType () const
查询回调函数类型。

void setLayoutComponentEnabled (bool enable)
设置是否启用布局组件。

bool isLayoutComponentEnabled () const
查询是否启用布局组件。

cocos代码研究(12)UI之Widget学习笔记的更多相关文章

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

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

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

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

  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代码研究(13)Widget子类EditBox学习笔记

    理论基础 一个用来输入文本的类,继承自 Widget , 以及 IMEDelegate. 代码部分 Public枚举类型 enum KeyboardReturnType键盘的返回键类型. enum I ...

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

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

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

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

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

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

随机推荐

  1. 第一篇:《UNIX 网络编程 第二版》编译环境的搭建

    第一步:搭建基本的编译环境 安装gcc, g++, bulid-essential等编译软件 第二步:下载本书示例源码包 第三步:解压下载到的包并放在用户主目录中 第四步:进入包内并执行以下命令 su ...

  2. N76E003学习之路(二)

    最近一直在想N76E003和STM8M003的对比情况,在网上找了不少资料,看了不少文档,具体总结如下: STM8S003F3P6:一共20个脚,最多支持16个GPIO,支持16个外部中断:2个16位 ...

  3. solr学习笔记-linux下配置solr(转)

    本文地址: http://zhoujianghai.iteye.com/blog/1540176 首先介绍一下solr: Apache Solr (读音: SOLer) 是一个开源.高性能.采用Jav ...

  4. nginx服务器配置说明

    总结nginx的一些配置选项: nginx全局配置文件 # 定义nginx运行的用户和组//一个默认同时为用户和组 //没有则默认为nobody user www-data; # nginx进程数,建 ...

  5. 设计模式之工厂方法模式(Java实现)

    “我先来”,“不,老公,我先!”.远远的就听到几个人,哦不,是工厂方法模式和抽象工厂模式俩小夫妻在争吵,尼妹,又不是吃东西,谁先来不都一样(吃货的世界~).“抽象工厂模式,赶紧的自我介绍,工厂方法模式 ...

  6. Docker源码分析(六):Docker Daemon网络

    1. 前言 Docker作为一个开源的轻量级虚拟化容器引擎技术,已然给云计算领域带来了新的发展模式.Docker借助容器技术彻底释放了轻量级虚拟化技术的威力,让容器的伸缩.应用的运行都变得前所未有的方 ...

  7. LeetCode——Search for a Range

    Description: Given a sorted array of integers, find the starting and ending position of a given targ ...

  8. 2800 送外卖[状态压缩dp]

    2800 送外卖  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 有一个送外卖的,他手上有n份订单,他 ...

  9. pano2vr制作360全景图

    1.下载pano2vr中文破解版2.制作360全景选择"矩形球面投影" 3.输出格式选择HTML5, 也可选择Flash(快被淘汰) 4.HTML5输出选项中3个重要选项4.1 F ...

  10. koan重装system

    author:headsen chen date: 2018-08-02   16:29:51 koan是kickstart-over-a-network的缩写,它是cobbler的客户端帮助程序,k ...