cocos代码研究(12)UI之Widget学习笔记
理论基础
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学习笔记的更多相关文章
- cocos代码研究(5)Action学习笔记
理论部分 Action类也是cocos核心基础类之一,在游戏中起着非常重要的作用,继承自Ref,被 FiniteTimeAction(有限时间动作), Follow , 以及 Speed 继承. 有限 ...
- cocos代码研究(1)Node学习笔记
理论部分 Node类继承自Ref类,是cocos框架中基础底层的一个封装类,与画面渲染相关的类一般都是继承自该类,例如Scene,Layer,Sprite,Sprite3D,Label,SpriteB ...
- 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代码研究(13)Widget子类EditBox学习笔记
理论基础 一个用来输入文本的类,继承自 Widget , 以及 IMEDelegate. 代码部分 Public枚举类型 enum KeyboardReturnType键盘的返回键类型. enum I ...
- cocos代码研究(25)Widget子类PageView学习笔记
基础理论 ListView控件是一个显示滚动项目列表的视图组. 列表项是通过使用addChild或insertDefaultItem插入到列表中的,继承自ScrollView. 代码实践 static ...
- cocos代码研究(17)Widget子类RadioButtonGroup学习笔记
理论基础 RadioButtonGroup可以把指定的单选按钮组织起来, 形成一个组, 使它们彼此交互. 在一个RadioButtonGroup, 有且只有一个或者没有RadioButton可以处于被 ...
- cocos代码研究(16)Widget子类RadioButton学习笔记
理论基础 RadioButton是一种特定类型的两状态按钮,它与复选框相似.它可以 和RadioButtonGroup一起使用,形成一个"组".继承自AbstractCheckBu ...
随机推荐
- Neo4j简单的样例
系统环境: Ubuntu 04.10 x64 一:安装 下载最新版:neo4j-community-2.2.3-unix.tar.gz 解压 cd neo4j-community-2.2.3/bin ...
- 微信移动端(wap)开发调试工具
为帮助开发者更方便.更安全地开发和调试基于微信的网页,微信官方推出了 web 开发者工具.它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在 PC 或者 Mac 上进行开发 ...
- 单独使用 EHCache
1. EHCache 的特点,是一个纯Java ,过程中(也可以理解成插入式)缓存实现,单独安装Ehcache ,需把ehcache-X.X.jar 和相关类库方到classpath中.如项目已安装了 ...
- os.path模块【python】
os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径) ...
- windows7中的“mklink命令”
从 Vista 以后,微软将用户文件和用户的软件配置( AppData ) 明确划分开,并且全部存放在使用者的用户目录下. Linux早已这样做了,并且在Linux中可将 home 挂载为独立分区,而 ...
- lua和C++交互的lua栈操作——以LuaTinker为例
一. -- C++类注册函数(LuaTinker) 的lua栈操作: -- lua栈内容(执行到pop语句) 栈地址 <--执行语句 space_name[name] = t1 -- (2b8) ...
- mySQL数据库三:命令行附录
一:where 在上一篇,粗略的介绍了where,但是where后面可以跟其他的条件,现在我们来一一说明 1.between:在某两个值之间 我建立一个名为person的表,里面有id,name,ag ...
- Runtime应用(二)使用对象关联为分类增加属性(每个对象的属性互不干扰)
一.对象的关联方法有 1. void objc_setAssociatedObject(id object, const void *key, id value,objc_AssociationPol ...
- android基础---->发送和接收短信
收发短信应该是每个手机最基本的功能之一了,即使是许多年前的老手机也都会具备这项功能,而Android 作为出色的智能手机操作系统,自然也少不了在这方面的支持.今天我们开始自己创建一个简单的发送和接收短 ...
- 重构(Refactoring)技巧读书笔记(General Refactoring Tips)
重构(Refactoring)技巧读书笔记 之一 General Refactoring Tips, Part 1 本文简要整理重构方法的读书笔记及个人在做Code Review过程中,对程序代码常用 ...