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 ...
随机推荐
- ionic简单路由及页面传参
1)页面跳转及传参方法 angular.module('app.routes', [])//routes路由模型 .config(function($stateProvider, $urlRouter ...
- /var/log/cron
/var/log/cron 用来记录任务计划的运行日志,如下,分别表示: 任务运行的日期与时间 .在哪台主机上运行 .运行任务的程序[进程号] .任务运行的具体信息 [root@localhost ~ ...
- Putty的安装和使用
Putty是最简单易用的SSH工具,详细介绍其安装和使用 直接在百度里搜索Putty,可以找到百度软件中心,或者官方网站: PuTTY Download Page. 进入官方网站,直接可执行文件装 ...
- zookeeper集群的安装和配置
Zookeeper的目的是封装好复杂易出错的关键服务,将简单易用的接口和性能高效.功能稳定的系统提供给用户.Zookeeper有两种运行模式,单机模式(Standalone)和集群模式(Distrib ...
- <转>SVM实现之SMO算法
转自http://blog.csdn.net/zouxy09/article/details/17292011 终于到SVM的实现部分了.那么神奇和有效的东西还得回归到实现才可以展示其强大的功力.SV ...
- Java初学者笔记五:泛型处理
一.泛型类: 泛型是指适用于某一种数据类型而不是一个数据机构中能存不同类型 import java.io.*; import java.nio.file.Files; import java.nio. ...
- 使用as3crypto在Flex中实现AES加密
要在Flex中实现AES加密,可以通过as3crypto实现.但是as3crypto本身的用法比较复杂,一般是封装一下再调用. 下面是9RIA上的一篇文章给出的一个实现,使用中稍感不方便(见注释): ...
- DFS判断正环
hdu1217 Arbitrage Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 310实验室 Linux 软件安装常见问题
电脑装好Linux系统后,系统默认安装软件不齐,需要自己根据自己的需要安装一些列工具软件,在linux系统中,用的最多的就是Synaptic Package Manager,什么是Synaptic?新 ...
- fiddler win10-1703Failed to register Fiddler as the system proxy
正解 The solution for the Fiddler error of "Failed to register Fiddler as the system proxy" ...