理论基础
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
查询是否启用布局组件。