cocos2d-js 控件

参考文档

cocos-js Http方式网络请求
JavaScript秘密花园
廖雪峰的官方网站
文档参考
动作列表
Node.js
node.js怎么判断当前是mac系统还是windows系统

cocos2d-js中 cc.xxx枚举

/**
 * 文本水平对齐方式
 */
cc.TEXT_ALIGNMENT_CENTER    = 1;
cc.TEXT_ALIGNMENT_RIGHT     = 2;
cc.TEXT_ALIGNMENT_LEFT      = 0;

/**
 * 文本垂直对齐方式
 */
cc.VERTICAL_TEXT_ALIGNMENT_TOP      = 0;
cc.VERTICAL_TEXT_ALIGNMENT_CENTER   = 1;
cc.VERTICAL_TEXT_ALIGNMENT_BOTTOM   = 2;

cocos2d-js中 ccui.xxx枚举

/*
 * UILayout.h -> "enum class BackGroundColorType"
 * UILayout的背景颜色类型,默认为NONE。
 */
ccui.Layout.BG_COLOR_NONE = 0;      无色
ccui.Layout.BG_COLOR_SOLID = 1;     纯色
ccui.Layout.BG_COLOR_GRADIENT = 2;  渐变色

/**
 * UILayout.h -> "enum class Type"
 * UILayout布局类型,默认为ABSOLUTE。     
 */
ccui.Layout.ABSOLUTE = 0;           绝对布局
ccui.Layout.LINEAR_VERTICAL = 1;    垂直布局
ccui.Layout.LINEAR_HORIZONTAL = 2;  水平布局
ccui.Layout.RELATIVE = 3;           相对布局

/**
 * UILayout.h -> "enum class ClippingType"
 * 裁剪模式
 */
ccui.Layout.CLIPPING_STENCIL = 0;            模板裁剪 类似于UILayout的裁剪模式(使用的模板缓冲,所以无论控件的矩阵怎么样变换,都可以完美的进行裁切)
ccui.Layout.CLIPPING_SCISSOR = 1;            剪刀裁剪 类似于ScrollView、ListView的裁剪模式(直接使用矩阵进行计算,效率比较高,但是目前还不能很好的支持旋转和缩放)
ccui.Layout.BACKGROUND_IMAGE_ZORDER = -1;    背景图片渲染
ccui.Layout.BACKGROUND_RENDERER_ZORDER = -2; 背景渲染器渲染

/*
 * UILayoutParameter.h -> "enum class LinearGravity"
 * 线性布局枚举
 */
// 旧
ccui.LINEAR_GRAVITY_NONE = 0;
ccui.LINEAR_GRAVITY_LEFT = 1;
ccui.LINEAR_GRAVITY_TOP = 2;
ccui.LINEAR_GRAVITY_RIGHT = 3;
ccui.LINEAR_GRAVITY_BOTTOM = 4;
ccui.LINEAR_GRAVITY_CENTER_VERTICAL = 5;
ccui.LINEAR_GRAVITY_CENTER_HORIZONTAL = 6;
// 新
ccui.LinearLayoutParameter.NONE = 0;
ccui.LinearLayoutParameter.LEFT = 1;
ccui.LinearLayoutParameter.TOP = 2;
ccui.LinearLayoutParameter.RIGHT = 3;
ccui.LinearLayoutParameter.BOTTOM = 4;
ccui.LinearLayoutParameter.CENTER_VERTICAL = 5;
ccui.LinearLayoutParameter.CENTER_HORIZONTAL = 6;

/**
 * UILayoutParameter.h -> "enum class RelativeAlign"
 * 相对对齐类型
 */
// 旧
ccui.RELATIVE_ALIGN_NONE = 0;
ccui.RELATIVE_ALIGN_PARENT_TOP_LEFT = 1;
ccui.RELATIVE_ALIGN_PARENT_TOP_CENTER_HORIZONTAL = 2;
ccui.RELATIVE_ALIGN_PARENT_TOP_RIGHT = 3;
ccui.RELATIVE_ALIGN_PARENT_LEFT_CENTER_VERTICAL = 4;
ccui.RELATIVE_ALIGN_PARENT_CENTER = 5;
ccui.RELATIVE_ALIGN_PARENT_RIGHT_CENTER_VERTICAL = 6;
ccui.RELATIVE_ALIGN_PARENT_LEFT_BOTTOM = 7;
ccui.RELATIVE_ALIGN_PARENT_BOTTOM_CENTER_HORIZONTAL = 8;
ccui.RELATIVE_ALIGN_PARENT_RIGHT_BOTTOM = 9;

ccui.RELATIVE_ALIGN_LOCATION_ABOVE_LEFT = 10;
ccui.RELATIVE_ALIGN_LOCATION_ABOVE_CENTER = 11;
ccui.RELATIVE_ALIGN_LOCATION_ABOVE_RIGHT = 12;

ccui.RELATIVE_ALIGN_LOCATION_LEFT_TOP = 13;
ccui.RELATIVE_ALIGN_LOCATION_LEFT_CENTER = 14;
ccui.RELATIVE_ALIGN_LOCATION_LEFT_BOTTOM = 15;

ccui.RELATIVE_ALIGN_LOCATION_RIGHT_TOP = 16;
ccui.RELATIVE_ALIGN_LOCATION_RIGHT_CENTER = 17;
ccui.RELATIVE_ALIGN_LOCATION_RIGHT_BOTTOM = 18;

ccui.RELATIVE_ALIGN_LOCATION_BELOW_TOP = 19;
ccui.RELATIVE_ALIGN_LOCATION_BELOW_CENTER = 20;
ccui.RELATIVE_ALIGN_LOCATION_BELOW_BOTTOM = 21;

// 新
ccui.RelativeLayoutParameter.NONE = 0;
ccui.RelativeLayoutParameter.PARENT_TOP_LEFT = 1;
ccui.RelativeLayoutParameter.PARENT_TOP_CENTER_HORIZONTAL = 2;
ccui.RelativeLayoutParameter.PARENT_TOP_RIGHT = 3;
ccui.RelativeLayoutParameter.PARENT_LEFT_CENTER_VERTICAL = 4;

ccui.RelativeLayoutParameter.CENTER_IN_PARENT = 5;

ccui.RelativeLayoutParameter.PARENT_RIGHT_CENTER_VERTICAL = 6;
ccui.RelativeLayoutParameter.PARENT_LEFT_BOTTOM = 7;
ccui.RelativeLayoutParameter.PARENT_BOTTOM_CENTER_HORIZONTAL = 8;
ccui.RelativeLayoutParameter.PARENT_RIGHT_BOTTOM = 9;

ccui.RelativeLayoutParameter.LOCATION_ABOVE_LEFTALIGN = 10;
ccui.RelativeLayoutParameter.LOCATION_ABOVE_CENTER = 11;
ccui.RelativeLayoutParameter.LOCATION_ABOVE_RIGHTALIGN = 12;
ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_TOPALIGN = 13;
ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_CENTER = 14;
ccui.RelativeLayoutParameter.LOCATION_LEFT_OF_BOTTOMALIGN = 15;
ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_TOPALIGN = 16;
ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_CENTER = 17;
ccui.RelativeLayoutParameter.LOCATION_RIGHT_OF_BOTTOMALIGN = 18;
ccui.RelativeLayoutParameter.LOCATION_BELOW_LEFTALIGN = 19;
ccui.RelativeLayoutParameter.LOCATION_BELOW_CENTER = 20;
ccui.RelativeLayoutParameter.LOCATION_BELOW_RIGHTALIGN = 21;

/*
 * UILayoutParameter.h -> "enum class Type"
 * 布局参数类型
 */
ccui.LayoutParameter.NONE = 0;      无布局参数类型
ccui.LayoutParameter.LINEAR = 1;    元素将按边缘排列。
ccui.LayoutParameter.RELATIVE = 2;  元素将按边距和相关的部件名称进行排列。

/*
 * UILayoutComponent.h -> "enum class HorizontalEdge"
 * 部件水平和垂直方向的布局样式
 */
ccui.LayoutComponent.horizontalEdge = {};
ccui.LayoutComponent.horizontalEdge.NONE = 0;
ccui.LayoutComponent.horizontalEdge.LEFT = 1;
ccui.LayoutComponent.horizontalEdge.RIGHT = 2;
ccui.LayoutComponent.horizontalEdge.CENTER = 3;

ccui.LayoutComponent.verticalEdge = {};
ccui.LayoutComponent.verticalEdge.NONE = 0;
ccui.LayoutComponent.verticalEdge.BOTTOM = 1;
ccui.LayoutComponent.verticalEdge.TOP = 2;
ccui.LayoutComponent.verticalEdge.CENTER = 3;

/*
 * UIWidget.h -> "enum class BrightStyle"
 * 明亮风格
 */
ccui.Widget.BRIGHT_STYLE_NONE = -1;         无风格
ccui.Widget.BRIGHT_STYLE_NORMAL = 0;        默认
ccui.Widget.BRIGHT_STYLE_HIGH_LIGHT = 1;    高亮

/**
 * 小部件类型
 */
ccui.Widget.TYPE_WIDGET = 0;        小部件类型
ccui.Widget.TYPE_CONTAINER = 1;     容器类型

/**
 * UIWidget.h -> "enum class TextureResType"
 * 纹理资源类型
 */
ccui.Widget.LOCAL_TEXTURE = 0;  本地图片
ccui.Widget.PLIST_TEXTURE = 1;  Plist文件中的图片

/**
 * UIWidget.h -> "typedef enum TouchEventType"
 * 触摸类型
 */
ccui.Widget.TOUCH_BEGAN = 0;
ccui.Widget.TOUCH_MOVED = 1;
ccui.Widget.TOUCH_ENDED = 2;
ccui.Widget.TOUCH_CANCELED = 3;

/**
 * UIWidget.h -> "enum class SizeType"
 * 尺寸类型 
 */
ccui.Widget.SIZE_ABSOLUTE = 0;  绝对值
ccui.Widget.SIZE_PERCENT = 1;   百分值

//position type
/**
 * UIWidget.h -> "enum class PositionType" 
 * 坐标类型 
 */
ccui.Widget.POSITION_ABSOLUTE = 0;  绝对值
ccui.Widget.POSITION_PERCENT = 1;   百分值

/**
 * UIWidget.h -> "enum class FocusDirection" 
 * 焦点位置
 */
ccui.Widget.LEFT = 0;   
ccui.Widget.RIGHT = 1;
ccui.Widget.UP = 2;
ccui.Widget.DOWN = 3;

/*
 * UIListView.h -> "enum class EventType"
 * ListView元素项单击事件。 
 */
ccui.ListView.EVENT_SELECTED_ITEM = 0;      默认
ccui.ListView.ON_SELECTED_ITEM_START = 0;   开始点击
ccui.ListView.ON_SELECTED_ITEM_END = 1;     结束点击

/**
 * UIListView.h -> "enum class Gravity"
 */
ccui.ListView.GRAVITY_LEFT = 0;
ccui.ListView.GRAVITY_RIGHT = 1;
ccui.ListView.GRAVITY_CENTER_HORIZONTAL = 2;
ccui.ListView.GRAVITY_TOP = 3;
ccui.ListView.GRAVITY_BOTTOM = 4;
ccui.ListView.GRAVITY_CENTER_VERTICAL = 5;

/*
 * UIScrollView.h -> "enum class Direction"
 * ScrollView滚动方向   
 */
ccui.ScrollView.DIR_NONE = 0;           不支持滚动
ccui.ScrollView.DIR_VERTICAL = 1;       垂直方向滚动
ccui.ScrollView.DIR_HORIZONTAL = 2;     水平方向滚动
ccui.ScrollView.DIR_BOTH = 3;           支持两个方向滚动

/*
 * UIScrollView.h -> "typedef enum ScrollviewEventType"
 * ScrollView滚动事件类型 
 * ccui.ScrollView.EVENT_BOUNCE_RIGHT       
 */
ccui.ScrollView.EVENT_SCROLL_TO_TOP = 0;        往上滚动
ccui.ScrollView.EVENT_SCROLL_TO_BOTTOM = 1;     往下滚动
ccui.ScrollView.EVENT_SCROLL_TO_LEFT = 2;       往左滚动
ccui.ScrollView.EVENT_SCROLL_TO_RIGHT = 3;      往右滚动
ccui.ScrollView.EVENT_SCROLLING = 4;            滚动中
ccui.ScrollView.EVENT_BOUNCE_TOP = 5;           往上回弹
ccui.ScrollView.EVENT_BOUNCE_BOTTOM = 6;        往下回弹
ccui.ScrollView.EVENT_BOUNCE_LEFT = 7;          往左回弹
ccui.ScrollView.EVENT_BOUNCE_RIGHT = 8;         往右回弹

ccui.ScrollView.AUTO_SCROLL_MAX_SPEED = 1000;   最大滚动速度
ccui.ScrollView.SCROLLDIR_UP = cc.p(0, 1);      
ccui.ScrollView.SCROLLDIR_DOWN = cc.p(0, -1);   
ccui.ScrollView.SCROLLDIR_LEFT = cc.p(-1, 0);
ccui.ScrollView.SCROLLDIR_RIGHT = cc.p(1, 0);

/**
 * UIPageView.h -> "enum class EventType"
 * 交互事件
 */
ccui.PageView.EVENT_TURNING = 0;    拖拽

/**
 * UIPageView.h -> "enum class TouchDirection"
 * 拖动方向
 */
ccui.PageView.TOUCH_DIR_LEFT = 0;
ccui.PageView.TOUCH_DIR_RIGHT = 1;
ccui.PageView.TOUCH_DIR_UP = 2;
ccui.PageView.TOUCH_DIR_DOWN = 3;

/**
 * 滚动方向
 */
ccui.PageView.DIRECTION_HORIZONTAL = 0;
ccui.PageView.DIRECTION_VERTICAL = 1;

/*
 * UIButton
 * 渲染方式     
 */
ccui.NORMAL_RENDERER_ZORDER = -2;       普通渲染
ccui.PRESSED_RENDERER_ZORDER = -2;      压缩渲染
ccui.DISABLED_RENDERER_ZORDER = -2;     禁用渲染
ccui.TITLE_RENDERER_ZORDER = -1;        标题渲染

/**
 * 九宫格位置
   1 2 3
   4 5 6
   7 8 9
 */
ccui.Scale9Sprite.POSITIONS_CENTRE          
ccui.Scale9Sprite.POSITIONS_TOP             
ccui.Scale9Sprite.POSITIONS_LEFT            
ccui.Scale9Sprite.POSITIONS_RIGHT           
ccui.Scale9Sprite.POSITIONS_BOTTOM          
ccui.Scale9Sprite.POSITIONS_TOPRIGHT        
ccui.Scale9Sprite.POSITIONS_TOPLEFT
ccui.Scale9Sprite.POSITIONS_BOTTOMRIGHT
ccui.Scale9Sprite.POSITIONS_BOTTOMLEFT 

/*
 * UICheckBox.h -> "enum class EventType"
 * 选中事件
 */
ccui.CheckBox.EVENT_SELECTED = 0;       选中
ccui.CheckBox.EVENT_UNSELECTED = 1;     未选中

ccui.CheckBox.BOX_RENDERER_ZORDER = -1;                     
ccui.CheckBox.BOX_SELECTED_RENDERER_ZORDER = -1;            
ccui.CheckBox.BOX_DISABLED_RENDERER_ZORDER = -1;            
ccui.CheckBox.FRONT_CROSS_RENDERER_ZORDER = -1;             
ccui.CheckBox.FRONT_CROSS_DISABLED_RENDERER_ZORDER = -1;    

/*
 * UIImageView
 */
ccui.ImageView.RENDERER_ZORDER = -1;

/*
 * UILoadingBar.h -> "enum class Direction"
 * 进度条进度方向
 */
ccui.LoadingBar.TYPE_LEFT = 0;  从左往右
ccui.LoadingBar.TYPE_RIGHT = 1; 从右往左

ccui.LoadingBar.RENDERER_ZORDER = -1;

/*
 * UIRichElement
 */
//Rich element type
//ccui.RichElement.TYPE_TEXT = 0;
//ccui.RichElement.TYPE_IMAGE = 1;
//ccui.RichElement.TYPE_CUSTOM = 2;

/*
 * UISlider.h -> "enum class EventType"
 * 交互事件
 */
ccui.Slider.EVENT_PERCENT_CHANGED = 0;      百分比已更改
ccui.Slider.EVENT_SLIDEBALL_DOWN = 1;       事件滑块下降
ccui.Slider.EVENT_SLIDEBALL_UP = 2;         事件滑块上升
ccui.Slider.EVENT_SLIDEBALL_CANCEL = 3;     事件滑块取消

/*
 * UISlider渲染
 */
ccui.Slider.BASEBAR_RENDERER_ZORDER = -3;
ccui.Slider.PROGRESSBAR_RENDERER_ZORDER = -2;
ccui.Slider.BALL_RENDERER_ZORDER = -1;

/*
 * UIText渲染
 */
ccui.Text.RENDERER_ZORDER = -1;

/*
 * UITextAtlas渲染
 */
ccui.TextAtlas.RENDERER_ZORDER = -1;

/*
 * UITextBMFont渲染
 */
ccui.TextBMFont.RENDERER_ZORDER = -1;

/*
 * UITextField.h -> "typedef enum TextFiledEventType"
 * 交互事件
 */
ccui.TextField.EVENT_ATTACH_WITH_IME = 0;   弹出键盘
ccui.TextField.EVENT_DETACH_WITH_IME = 1;   收起键盘
ccui.TextField.EVENT_INSERT_TEXT = 2;       输入字符
ccui.TextField.EVENT_DELETE_BACKWARD = 3;   回退字符

ccui.TextField.RENDERER_ZORDER = -1;

/*
 * UIRadioButton.h -> "RadioButton" -> "enum class EventType"
 * 交互事件
 */
ccui.RadioButton.EVENT_SELECTED = 0;            选中
ccui.RadioButton.EVENT_UNSELECTED = 1;          未选中

/*
 * UIRadioButton.h -> "RadioButtonGroup" -> "enum class EventType"
 * 交互事件
 */
ccui.RadioButtonGroup.EVENT_SELECT_CHANGED = 0; 选中状态改变

ScrollView

ScrollView公有属性、方法

/**
 * ScrollView的滚动方向
 */
enum class Direction
{
    NONE,
    VERTICAL,
    HORIZONTAL,
    BOTH
};

/**
 * ScrollView的滚动事件类型
 */
enum class EventType
{
    SCROLL_TO_TOP,      // 向上滚动
    SCROLL_TO_BOTTOM,   // 向下滚动
    SCROLL_TO_LEFT,     // 向左滚动
    SCROLL_TO_RIGHT,    // 向右滚动
    SCROLLING,          // 滚动中
    BOUNCE_TOP,         // 向上反弹
    BOUNCE_BOTTOM,      // 向下反弹
    BOUNCE_LEFT,        // 向左反弹
    BOUNCE_RIGHT,       // 向右反弹
    CONTAINER_MOVED     // 容器移动
};

/**
 * 构造函数
 * @js ctor
 * @lua new
 */
ScrollView();

/**
 * 创建一个空ScrollView
 * @return 返回一个ScrollView
 */
static ScrollView* create();

/**
 * 设置ScrollView的滚动方向
 * @param dir 查看枚举 Direction
 */
virtual void setDirection(Direction dir);

/**
 * 获取ScrollView的滚动方向
 * @return 返回Direction枚举
 */
Direction getDirection()const;

/**
 * 获取ScrollView内的基容器,是一个ScrollView的子视图(继承关系)
 * @return 返回ScrollView内的子容器
 */
Layout* getInnerContainer()const;

/**
 * 将ScrollView滚动到底部
 * @param timeInSec  滚动时长
 * @param attenuated 是否进行减速
 */
void scrollToBottom(float timeInSec, bool attenuated);

/**
 * 将ScrollView滚动到顶部
 * @param timeInSec  滚动时长
 * @param attenuated 是否进行减速
 */
void scrollToTop(float timeInSec, bool attenuated);

/**
 * 将ScrollView滚动到左侧
 * @param timeInSec  滚动时长
 * @param attenuated 是否进行减速
 */
void scrollToLeft(float timeInSec, bool attenuated);

/**
 * 将ScrollView滚动到右侧
 * @param timeInSec  滚动时长
 * @param attenuated 是否进行减速
 */
void scrollToRight(float timeInSec, bool attenuated);

/**
 * 将ScrollView滚动到顶部左侧
 * @param timeInSec  滚动时长
 * @param attenuated 是否进行减速
 */
void scrollToTopLeft(float timeInSec, bool attenuated);

/**
 * 将ScrollView滚动到顶部右侧
 * @param timeInSec  滚动时长
 * @param attenuated 是否进行减速
 */
void scrollToTopRight(float timeInSec, bool attenuated);

/**
 * 将ScrollView滚动到底部左侧
 * @param timeInSec  滚动时长
 * @param attenuated 是否进行减速
 */
void scrollToBottomLeft(float timeInSec, bool attenuated);

/**
 * 将ScrollView滚动到底部右侧
 * @param timeInSec  滚动时长
 * @param attenuated 是否进行减速
 */
void scrollToBottomRight(float timeInSec, bool attenuated);

/**
 * 将ScrollView以垂直方向滚动到指定百分比位置
 * @param percent    百分值 0-100
 * @param timeInSec  滚动时长
 * @param attenuated 是否进行减速
 */
void scrollToPercentVertical(float percent, float timeInSec, bool attenuated);

/**
 * 将ScrollView以水平方向滚动到指定百分比位置
 * @param percent    百分值 0-100
 * @param timeInSec  滚动时长
 * @param attenuated 是否进行减速
 */
void scrollToPercentHorizontal(float percent, float timeInSec, bool attenuated);

/**
 * 将ScrollView以水平和垂直方向滚动到指定百分比位置
 * @param percent    百分值 0-100
 * @param timeInSec  滚动时长
 * @param attenuated 是否进行减速
 */
void scrollToPercentBothDirection(const Vec2& percent, float timeInSec, bool attenuated);

/**
 * 跳到ScrollView底部
 */
virtual void jumpToBottom();

/**
 * 跳到ScrollView顶部
 */
virtual void jumpToTop();

/**
 * 跳到ScrollView左侧
 */
virtual void jumpToLeft();

/**
 * 跳到ScrollView右侧
 */
virtual void jumpToRight();

/**
 * 跳到ScrollView左上
 */
virtual void jumpToTopLeft();

/**
 * 跳到ScrollView右上
 */
virtual void jumpToTopRight();

/**
 * 跳到ScrollView左下
 */
virtual void jumpToBottomLeft();

/**
 * 跳到ScrollView右下
 */
virtual void jumpToBottomRight();

/**
 * 以垂直方向跳到ScrollView指定的百分比位置
 * @param percent 百分值 0-100
 */
virtual void jumpToPercentVertical(float percent);

/**
 * 以水平方向跳到ScrollView指定的百分比位置
 * @param percent 百分值 0-100
 */
virtual void jumpToPercentHorizontal(float percent);

/**
 * 以水平和垂直方向跳到ScrollView指定的百分比位置
 * @param percent 百分值 0-100
 */
virtual void jumpToPercentBothDirection(const Vec2& percent);

/**
 * 设置ScrollView的滚动范围大小
 * @param size 滚动范围
 */
void setInnerContainerSize(const Size &size);

/**
 * 获取ScrollView的滚动范围大小
 * @return Size 滚动范围
 */
const Size& getInnerContainerSize() const;

/**
 * 设置ScrollView的滚动位置
 * @param pos 坐标
 */
void setInnerContainerPosition(const Vec2 &pos);

/**
 * 获取ScrollView的滚动位置
 * @return Vec2 坐标
 */
const Vec2 getInnerContainerPosition() const;

/**
 * ScrollView即将滚动时调用的回调
 */
typedef std::function<void(Ref*, EventType)> ccScrollViewCallback;

/**
 * 添加ScrollView的滚动事件回调
 * @param callback 查看ccScrollViewCallback
 */
virtual void addEventListener(const ccScrollViewCallback& callback);

/**
 * 添加子节点
 * @param child       子节点
 * @param localZOrder 层级树中的位置
 * @param tag         节点tag值
 * @param name        节点名
 */
virtual void addChild(Node* child)override;
virtual void addChild(Node * child, int localZOrder)override;
virtual void addChild(Node* child, int localZOrder, int tag) override;
virtual void addChild(Node* child, int localZOrder, const std::string &name) override;

/**
 * 移除所有子节点
 */
virtual void removeAllChildren() override;

/**
 * 移除所有子节点并清除动作及回调函数
 */
virtual void removeAllChildrenWithCleanup(bool cleanup) override;

/**
 * 移除指定节点
 * @param child  子节点
 * @param cleaup 是否清除动作及回调函数
 */
virtual void removeChild(Node* child, bool cleaup = true) override;

/**
 * 获取子节点
 */
virtual Vector<Node*>& getChildren() override;
virtual const Vector<Node*>& getChildren() const override;

/**
 * 获取所有子节点的总数
 */
virtual ssize_t getChildrenCount() const override;

/**
 * 通过tag获取子节点
 * @param tag 节点tag值
 */
virtual Node * getChildByTag(int tag) const override;

/**
 * 通过name获取子节点
 * @param name 节点name值
 */
virtual Node* getChildByName(const std::string& name)const override;

/**
 * ScrollView交互事件
 */
virtual bool onTouchBegan(Touch *touch, Event *unusedEvent) override;
virtual void onTouchMoved(Touch *touch, Event *unusedEvent) override;
virtual void onTouchEnded(Touch *touch, Event *unusedEvent) override;
virtual void onTouchCancelled(Touch *touch, Event *unusedEvent) override;

/**
 * ?
 */
virtual void update(float dt) override;

/**
 * 设置ScrollView回弹效果
 * @param enabled 是否可以回弹
 */
void setBounceEnabled(bool enabled);

/**
 * 获取ScrollView是否回弹
 * @return 是否可以回弹
 */
bool isBounceEnabled() const;

/**
 * 设置ScrollView的惯性滚动(即快速拖动后,会继续滚动一段距离并逐渐停下)
 * @param enabled 是否设置惯性滚动
 */
void setInertiaScrollEnabled(bool enabled);

/**
 * 获取ScrollView是否惯性滚动
 * @return 是否支持惯性滚动
 */
bool isInertiaScrollEnabled() const;

/**
 * 设置ScrollView是否显示滚动条
 * @param enabled 是否显示滚动条
 */
void setScrollBarEnabled(bool enabled);

/**
 * 获取ScrollView是否显示滚动条
 * @return 是否显示滚动条
 */
bool isScrollBarEnabled() const;

/**
 * 从左下角(水平)和右上角(垂直)设置滚动条位置
 * @param positionFromCorner 坐标位置
 */
void setScrollBarPositionFromCorner(const Vec2& positionFromCorner);

/**
 * 从右上角设置垂直滚动条位置
 * @param positionFromCorner 坐标位置
 */
void setScrollBarPositionFromCornerForVertical(const Vec2& positionFromCorner);

/**
 * 从右上角获取垂直滚动条的位置   
 * @return positionFromCorner 坐标位置
 */
Vec2 getScrollBarPositionFromCornerForVertical() const;

/**
 * 从左下角设置水平滚动条的位置
 * @param positionFromCorner 坐标位置
 */
void setScrollBarPositionFromCornerForHorizontal(const Vec2& positionFromCorner);

/**
 * 从右上角获取水平滚动条的位置
 * @return positionFromCorner 坐标位置
 */
Vec2 getScrollBarPositionFromCornerForHorizontal() const;

/**
 * 设置滚动条的宽度
 * @param width 滚动条的宽度
 */
void setScrollBarWidth(float width);

/**
 * 获取滚动条的宽度
 * @return 滚动条的宽度
 */
float getScrollBarWidth() const;

/**
 * 设置滚动条的颜色
 * @param color 滚动条颜色
 */
void setScrollBarColor(const Color3B& color);

/**
 * 获取滚动条的颜色
 * @return 滚动条颜色
 */
const Color3B& getScrollBarColor() const;

/**
 * 设置滚动条的透明度
 * @param opacity 透明度 0-100
 */
void setScrollBarOpacity(GLubyte opacity);

/**
 * 获取滚动条的透明度
 * @return 透明度 0-100
 */
GLubyte getScrollBarOpacity() const;

/**
 * 设置滚动条自动隐藏状态
 * @param autoHideEnabled 是否自动隐藏
 */
void setScrollBarAutoHideEnabled(bool autoHideEnabled);

/**
 * 获取滚动条自动隐藏状态
 * @return 是否自动隐藏
 */
bool isScrollBarAutoHideEnabled() const;

/**
 * 设置滚动条自动隐藏时间
 * @param autoHideTime 自动隐藏的时间
 */
void setScrollBarAutoHideTime(float autoHideTime);

/**
 * 获取滚动条自动隐藏时间
 * @return 自动隐藏的时间
 */
float getScrollBarAutoHideTime() const;

enum class Type
{
    ABSOLUTE,
    VERTICAL,
    HORIZONTAL,
    RELATIVE
};

/**
 * 设置ScrollView的布局类型
 * @param type 类型枚举(查阅Layout::Type)
 */
virtual void setLayoutType(Type type) override;

/**
 * 设置ScrollView的布局类型
 * @param type 类型枚举(查阅Layout::Type)
 */
virtual Type getLayoutType() const override;

/**
 * 获得ScrollView控件描述
 */
virtual std::string getDescription() const override;

/**
 * @lua NA
 */
virtual void onEnter() override;

/**
 *  当一个小部件在一个布局中时,你可以调用这个方法来在指定的方向上获得下一个焦点部件。
 *  如果小部件不在布局中,它将自行返回
 *@param direction 在布局中查找下一个重点小部件的方向
 *@param current   当前重点小部件
 *@return 布局中的下一个重点小部件
 */
virtual Widget* findNextFocusedWidget(FocusDirection direction, Widget* current) override;

ScrollView示例

// 初始化
var scrollView = new ccui.ScrollView();

// 设置方向
scrollView.setDirection(ccui.ScrollView.DIR_VERTICAL);

// 允许交互
scrollView.setTouchEnabled(true);

// 设置回弹
scrollView.setBounceEnabled(true);

// 设置滑动的惯性
scrollView.setInertiaScrollEnabled(true);

// 设置滚动内容的范围
scrollView.setContentSize(cc.size(size.width, size.height));

// 设置容器的大小
scrollView.setInnerContainerSize(cc.size(size.width, size.height*4));

// 添加触摸事件监听器
scrollView.addEventListener(this.scrollViewCall, this);

// 锚点
scrollView.setAnchorPoint(cc.p(0,0));

// 位置坐标
scrollView.setPosition(cc.p(0,0));

// 滚动至底部
scrollView.jumpToBottom();        

// 0-3滑动到上下左右触发,4滑动一直触发,5-8惯性滑动到上下左右触发
scrollViewCall:function(sender, type){
    switch (type){
        case ccui.ScrollView.EVENT_SCROLL_TO_TOP:break;
        case ccui.ScrollView.EVENT_SCROLL_TO_BOTTOM:break;
        case ccui.ScrollView.EVENT_SCROLL_TO_LEFT:break;
        case ccui.ScrollView.EVENT_SCROLL_TO_RIGHT:break;
        case ccui.ScrollView.EVENT_SCROLLING:break;
        case ccui.ScrollView.EVENT_BOUNCE_TOP:break;
        case ccui.ScrollView.EVENT_BOUNCE_BOTTOM:break;
        case ccui.ScrollView.EVENT_BOUNCE_LEFT:break;
        case ccui.ScrollView.EVENT_BOUNCE_RIGHT:break;
        default:break;
    }
}, 

this.addChild(scrollView);

ScrollView制作表情列表

var emojiView = new ccui.ScrollView(); // 初始化
var emojiList = game.emojiList;        // 表情数组(保存emoji表情,如��)
var width = emojiView.width;           // 滚动视图宽度
var rowCount = 7;                      // 每行个数
var emojiWidth = width / rowCount;     // 表情按钮大小
var maxRow = Math.ceil(emojiList.length / rowCount); // 最大行
var scrollViewHeight = maxRow * emojiWidth; // 滚动视图内容高度
emojiView.setInnerContainerSize(cc.size(emojiView.width, scrollViewHeight)); // 设置滚动范围

// 将emoji表情添加到滚动列表上
for (var i = 0; i < emojiList.length; i++) {
    var row = parseInt(i / rowCount); // 当前行
    var col = i % rowCount;           // 当前列

    // 按钮
    var emojiBtn = new ccui.Button("","");  
    emojiBtn.setAnchorPoint(0.5, 0.5)
    emojiBtn.setPosition(emojiWidth * col + emojiWidth / 2, scrollViewHeight - (emojiWidth * row + emojiWidth / 2));  
    emojiBtn.setTitleText(emojiList[i]);//在按钮上方添加一个label.  
    emojiBtn.setTitleFontSize(40);
    emojiView.addChild(emojiBtn);
}

WebView

cocos2d-x3.3 lua调用webview回调函数

WebView公有属性、方法

/**
 * 设置javascript接口前缀(用于JS交互作用)
 * 例如设置为"js",那么页面在跳转"js://xxx"时,会走setOnJSCallback回调
 */
void setJavascriptInterfaceScheme(const std::string &scheme);

/**
 * 设置主页内容、MIME类型、内容编码,基本URL
 * @param data     主要的内容页面。
 * @param MIMEType 描述消息内容类型的因特网标准
 * @param encoding 编码数据
 * @param baseURL  根链接
 */
void loadData(const cocos2d::Data &data, const std::string &MIMEType, const std::string &encoding, const std::string &baseURL);

/**
 * 设置主页内容和基本URL
 * @param string  主要的内容页面
 * @param baseURL 基URL
 */
void loadHTMLString(const std::string &string, const std::string &baseURL = "");

/**
 * 加载给定的URL
 * @param url 要加载的URL
 */
void loadURL(const std::string &url);

/**
 * 加载给定的本地文件
 * @param fileName 要加载的文件路径
 */
void loadFile(const std::string &fileName);

/**
 * 停止加载
 */
void stopLoading();

/**
 * 重新加载
 */
void reload();

/**
 * 判断是否能返回上一页(即回到上一个URL页面)
 * @return 是否能返回
 */
bool canGoBack();

/**
 * 判断是否能跳转下一页(即加载下一个URL界面)
 * @return 是否能返回
 */
bool canGoForward();

/**
 * 回到上一页
 */
void goBack();

/**
 * 前往下一页
 */
void goForward();

/**
 * 用于调用JavaScript中的函数(如,web:evaluateJS("alert(\"hello\")"))
 */
void evaluateJS(const std::string &js);

/**
 * 设置是否支持缩放,默认是false
 */
void setScalesPageToFit(const bool scalesPageToFit);

/**
 * webView的回调函数
 */
typedef std::function<void(WebView *sender, const std::string &url)> ccWebViewCallback;

/**
 * 设置即将开始加载时的回调
 * @param  callback 回调函数
 * @return true,允许加载;false,不允许加载
 */
void setOnShouldStartLoading(const std::function<bool(WebView *sender, const std::string &url)>& callback);

/**
 * 获取即将开始加载时的回调
 */
std::function<bool(WebView *sender, const std::string &url)> getOnShouldStartLoading()const;

/**
 * 设置加载完成时的回调
 * @param callback 回调函数
 */
void setOnDidFinishLoading(const ccWebViewCallback& callback);

/**
 * 获取加载完成时的回调
 */
ccWebViewCallback getOnDidFinishLoading()const;

/**
 * 设置加载失败时的回调
 * @param callback 回调函数
 */
void setOnDidFailLoading(const ccWebViewCallback& callback);

/**
 * 获取加载失败时的回调
 */
ccWebViewCallback getOnDidFailLoading()const;

/**
 * 设置JS事件回调
 */
void setOnJSCallback(const ccWebViewCallback& callback);

/**
 * 获取JS事件回调
 */
ccWebViewCallback getOnJSCallback()const;

WebView示例

ctor: function () {
    // 初始化
    var webView = new ccui.WebView();

    // 坐标
    webView.setPosition(640, 360);

    // 控件大小
    webView.setContentSize(1280, 720);

    // 加载网络URL
    webView.loadURL(http://www.baidu.com);

    // 允许缩放
    webView.setScalesPageToFit(true);

    // 添加到视图上
    this.addChild(webView);

    // 设置加载流程回调
    webView.setOnDidFinishLoading(this.OnDidFinishLoading.bind(this));
    webView.setOnDidFailLoading(this.OnDidFailLoading.bind(this));
    webView.setOnShouldStartLoading(this.OnShouldStartLoading.bind(this));

    // 设置一个JS跳转的规则,cocosjs是前缀,即当跳转界面cocosjs://xxxx时,会进行回调,查看下面的OnJSCallback()函数
    webView.setJavascriptInterfaceScheme("cocosjs");

    // 设置JS回调
    webView.setOnJSCallback(this.OnJSCallback.bind(this));
},

/**
 * 加载完成后的回调
 * @param sender WebView
 * @param url    链接
 */
OnDidFinishLoading: function(sender, url) {
    cc.log("webView OnDidFinishLoading");
},

/**
 * 加载失败后的回调
 * @param sender WebView
 * @param url    链接
 */
OnDidFailLoading: function(sender, url) {
    cc.log("webView OnDidFailLoading");
},

/**
 * JS触发时的回调
 * @param sender WebView
 * @param url    链接
 */
OnJSCallback: function(sender, url) {
    cc.log("JS回调 = " + url);
    if (url == "cocosjs://closeKefuH5") {
        game.UISystem.closeWindow(this);
    }
},

/**
 * 开始加载时的回调
 * @param sender WebView
 * @param url    链接
 */
OnShouldStartLoading: function(sender, url) {
    cc.log("webView OnShouldStartLoading");

    return true;
},

UIText(emoji表情颜色不会被字体色改变、自动换行)

Cocos2dx 3.0 过渡篇 (二十一)自从Label有了freeType做靠山以后

UIText公有属性、方法

/** 
 * 文本类型
 */
enum class Type
{
    SYSTEM, // 系统
    TTF     // TTF
};

/**
 * 构造函数
 */
Text();

/**
 * 创建一个Text对象
 * @return Text对象
 */
static Text* create();

/**
 *  用textContent,fontName和fontSize创建一个Text对象。
 *  用法:
 *  Text *text = Text::create("Hello", "Arial", 20);
 *  Text *text = Text::create("Hello", "xxx\xxx.ttf", 20);
 *
 * @param textContent   文本内容字符串
 * @param fontName      可以是系统字体名称或TTF文件路径。
 * @param fontSize      字体大小
 * @return Text对象
 */
static Text* create(const std::string& textContent,
                    const std::string& fontName,
                    float fontSize);

/**
 * 更改标签的字符串值
 * @param text  字符串值
 */
void setString(const std::string& text);

/**
 * 获取标签的字符串值
 * @return 字符串值
 */
const std::string& getString()const;

/**
 * 获取标签的字符串长度
 * 注意:这个长度将比原始字符串长度大,如果你想获得原始字符串的长度,你应该调用this->getString().size()来代替
 * @return  字符串长度
 */
ssize_t getStringLength()const;

/**
 * 设置标签的字体大小
 * @param 字体大小
 */
void setFontSize(float size);

/**
 * 获取标签的字体大小
 * @return 字体大小
 */
float getFontSize()const;

/** 
 * 设置文字颜色
 * @param color 文字颜色
 */
void setTextColor(const Color4B color);

/** 
 * 获取文字颜色
 * @return 文字颜色
 */
const Color4B& getTextColor() const;

/**
 * 设置标签的字体名称
 * 如果您尝试使用系统字体,则只需传递字体名称
 * 如果您尝试使用TTF,则应该将文件路径传递给TTF文件
 * 用法:
 * Text *text = Text::create("Hello", "Arial", 20);
 * text->setFontName("Marfelt");
 * text->setFontName("xxxx/xxx.ttf");
 * @param 字体名称
 */
void setFontName(const std::string& name);

/** 
 * 获取字体名称
 * @return 字体名称
 */
const std::string& getFontName()const;

/** 
 * 获取字体类型
 * @return 字体类型(Type)
 */
Type getType() const;

/**
 * 设置标签的触摸比例
 * @param enabled 启用标签的触摸缩放
 */
void setTouchScaleChangeEnabled(bool enabled);

/**
 * 获取标签的触摸比例
 * @return  标签是否已启用触摸比例
 */
bool isTouchScaleChangeEnabled()const;

/*
 * ?
 */
virtual Size getVirtualRendererSize() const override;

/*
 * ?
 */
virtual Node* getVirtualRenderer() override;

/** 
 * 获取自动模式下的渲染大小
 * @return 渲染大小在自动模式下的大小
 */
virtual Size getAutoRenderSize();

/**
 * 返回控件的“类名”
 */
virtual std::string getDescription() const override;

/**
 * 设置文字渲染范围(即文本显示范围)
 * 同时调用`ignoreContentAdaptWithSize(false)`,否则就是文本区域
 * 大小是通过文本内容的真实大小来计算的
 * @param 渲染范围
 *
 */
void setTextAreaSize(const Size &size);

/** 
 * 返回文本渲染区域大小
 * @return 文本渲染区域大小
 */
const Size& getTextAreaSize()const;

/**
 * 水平对齐方式
 */
enum class CC_DLL TextHAlignment
{
    LEFT,
    CENTER,
    RIGHT
};

/** 
 * 设置文本水平对齐
 * @param alignment 文本水平对齐类型
 */
void setTextHorizontalAlignment(TextHAlignment alignment);

/** 
 * 获取文本水平对齐
 * @return 文本水平对齐类型
 */
TextHAlignment getTextHorizontalAlignment()const;

/** 
 * 设置文本垂直对齐
 * @param alignment 文本垂直对齐类型
 */
void setTextVerticalAlignment(TextVAlignment alignment);

/** 
 * 获取文本垂直对齐
 * @return 文本垂直对齐类型
 */
TextVAlignment getTextVerticalAlignment()const;

/**
 * 为标签启用阴影,支持阴影效果模糊
 * @param shadowColor 阴影效果的颜色
 * @param offset      阴影效应的偏移
 * @param blurRadius  阴影效果的模糊半径
 */
void enableShadow(const Color4B& shadowColor = Color4B::BLACK,
                  const Size &offset = Size(2,-2),
                  int blurRadius = 0);

/**
 * 返回是否启用阴影效果。
 */
bool isShadowEnabled() const;

/**
 * 返回阴影偏移量
 */
Size getShadowOffset() const;

/**
 * 返回阴影模糊半径
 */
float getShadowBlurRadius() const;

/**
 * 返回阴影颜色
 */
Color4B getShadowColor() const;

/**
 * 为标签启用描边
 * 只有在使用系统字体时,才能在IOS和Android上运行
 *
 * @param outlineColor 描边的颜色
 * @param outlineSize  描边的大小
 */
void enableOutline(const Color4B& outlineColor,int outlineSize = 1);

/**
 * 返回描边大小
 */
int getOutlineSize() const;

/** 
 * 字体荧光,只支持TTF
 * @param glowColor 荧光颜色
 */
void enableGlow(const Color4B& glowColor);

/**
 * 文字效果
 */
enum class LabelEffect {
    NORMAL,
    OUTLINE,
    SHADOW,
    GLOW,
    ALL
};

/** 
 * 禁用所有文字效果,包括阴影,描边和荧光。
 */
void disableEffect();

/**
 * 禁用特定的文字效果
 * @param effect 使用LabelEffect参数指定应该禁用哪个效果。
 */
void disableEffect(LabelEffect effect);

/**
 * 返回当前字体效果类型
 */
LabelEffect getLabelEffectType() const;

/**
 * 返回当前效果颜色值
 */
Color4B getEffectColor() const;

UIText示例

var text = new ccui.Text("玉米包谷玉米包谷 ?(此处为emoji表情)", "STYuanti-SC-Regular", 20);
text.setPosition(640, 360);
text.setFontSize(30);
text.setTextColor(cc.hexToColor("#87562A"));
text.setTextAreaSize(cc.size(500, 300));
text.ignoreContentAdaptWithSize(false);
text.setTextHorizontalAlignment(cc.VERTICAL_TEXT_ALIGNMENT_CENTER);

// 阴影
text.enableShadow(cc.color(0,0,0,255), cc.size(5, 5), 5);

// 描边
text.enableOutline(cc.color(255,255,255,255), 5);

// 取消描边
text.disableEffect(1);

UITextAtlas(艺术字)

UITextAtlas公有属性、方法

/**
 * 构造函数
 */
TextAtlas();

/**
 * 创建一个TextAtlas对象
 * @return TextAtlas对象
 */
static TextAtlas* create();

/**
 * 从一个字符映射文件创建一个TextAtlas对象
 * @param stringValue  给定需要显示的字符串
 * 注意:输入的字符串必须是'.'、'/'、'1'、'2'、"3"、"4"、"5"、"6"、"7"、"8"、"9"
 * @param charMapFile  给定的字符映射文件名
 * 注意:文件图片中的文字必须在同一行,如果是两行的会无法显示完整
 * @param itemWidth    字符的宽度
 * @param itemHeight   字符的高度
 * @param startCharMap 字符映射文件的起始字符
 * 注意: 输入的字符串必须是'.'、'/'、'1'、'2'、"3"、"4"、"5"、"6"、"7"、"8"、"9"
 * @return TextAtlas对象
 */
static TextAtlas* create(const std::string& stringValue,
                         const std::string& charMapFile,
                         int itemWidth,
                         int itemHeight,
                         const std::string& startCharMap);

/** 
 * 从一个字符映射文件创建一个TextAtlas对象
 * @param stringValue  给定需要显示的字符串
 * 注意:输入的字符串必须是'.'、'/'、'1'、'2'、"3"、"4"、"5"、"6"、"7"、"8"、"9"
 * @param charMapFile  给定的字符映射文件名
 * 注意:文件图片中的文字必须在同一行,如果是两行的会无法显示完整
 * @param itemWidth    字符的宽度
 * @param itemHeight   字符的高度
 * @param startCharMap 字符映射文件的起始字符
 * 注意: 输入的字符串必须是'.'、'/'、'1'、'2'、"3"、"4"、"5"、"6"、"7"、"8"、"9"
 */
void setProperty(const std::string& stringValue,
                 const std::string& charMapFile,
                 int itemWidth,
                 int itemHeight,
                 const std::string& startCharMap);

/**
 * 为TextAtlas设置字符串值
 * @param value 给定需要显示的字符串
 */
void setString(const std::string& value);

/**
 * 获取TextAtlas的字符串值
 * @return 给定需要显示的字符串
 */
const std::string& getString() const;

/**
 * 获取字符串长度
 * 注意:这个长度将比原始字符串长度大
 * 如果你想得到原始字符串的长度,你应该调用this-> getString().size()来代替
 * @return  字符串长度
 */
ssize_t getStringLength()const;

UITextAtlas示例

// 此处字符"."对应的字符是"+",字符"./167"对应展示的即为"+-167"
var text = new ccui.TextAtlas("", "res/Fonts/HeadScoreFont_0.png", 15, 26, ".");
text.setString("./167");
text.setPosition(640, 360);
this.addChild(text);

HeadScoreFont_0.png

这里写图片描述

HeadScoreFont_0.png对应的fnt文件

info face="Arial" size=32 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1 outline=0
common lineHeight=32 base=26 scaleW=256 scaleH=256 pages=1 packed=0 alphaChnl=1 redChnl=0 greenChnl=0 blueChnl=0
page id=0 file="HeadScoreFont_0.png"
chars count=12
char id=43   x=0     y=0     width=14    height=26    xoffset=0     yoffset=0     xadvance=14    page=0  chnl=15
char id=45   x=15    y=0     width=14    height=26    xoffset=0     yoffset=0     xadvance=14    page=0  chnl=15
char id=48   x=30    y=0     width=14    height=26    xoffset=0     yoffset=0     xadvance=14    page=0  chnl=15
char id=49   x=45    y=0     width=14    height=26    xoffset=0     yoffset=0     xadvance=14    page=0  chnl=15
char id=50   x=60    y=0     width=14    height=26    xoffset=0     yoffset=0     xadvance=14    page=0  chnl=15
char id=51   x=75    y=0     width=14    height=26    xoffset=0     yoffset=0     xadvance=14    page=0  chnl=15
char id=52   x=90    y=0     width=14    height=26    xoffset=0     yoffset=0     xadvance=14    page=0  chnl=15
char id=53   x=105   y=0     width=14    height=26    xoffset=0     yoffset=0     xadvance=14    page=0  chnl=15
char id=54   x=120   y=0     width=14    height=26    xoffset=0     yoffset=0     xadvance=14    page=0  chnl=15
char id=55   x=135   y=0     width=14    height=26    xoffset=0     yoffset=0     xadvance=14    page=0  chnl=15
char id=56   x=150   y=0     width=14    height=26    xoffset=0     yoffset=0     xadvance=14    page=0  chnl=15
char id=57   x=165   y=0     width=14    height=26    xoffset=0     yoffset=0     xadvance=14    page=0  chnl=15

UITextBMFont(FNT文字)

UITextBMFont公有属性、方法

/**
 * 构造函数
 */
TextBMFont();

/**
 * 构造函数
 * @param text      显示的文本
 * @param filename  fnt文件路径
 * @return TextBMFont对象
 */
static TextBMFont* create();
static TextBMFont* create(const std::string& text, const std::string& filename);

/** 
 * 设置TextBMFont对象的Fnt文件
 */
void setFntFile(const std::string& fileName);

/**
 * 设置TextBMFont对象的文本
 */
void setString(const std::string& value);

/** 
 * 获取TextBMFont的字符串值
 */
const std::string& getString()const;

/**
 * 获取字符串长度
 * 注意:这个长度将比原始字符串长度大
 * 如果你想得到原始字符串的长度,你应该调用this-> getString().size()来代替
 * @return  字符串长度
 */
ssize_t getStringLength()const;

TextBMFont示例

// 此处的HeadScoreFont.fnt文件与TextAtlas中的FNT文件是同一个
var text = new ccui.TextBMFont("", "res/Fonts/HeadScoreFont.fnt");
text.setString("+-167");
text.setPosition(640, 360);
this.addChild(text);

UITextField(输入框,无光标)

UITextField公有属性、方法

/**
 * TextField事件类型
 */
enum class EventType
{
    ATTACH_WITH_IME, // 键盘弹出
    DETACH_WITH_IME, // 键盘回收
    INSERT_TEXT,     // 输入字符
    DELETE_BACKWARD, // 删除字符
};

/**
 * 一个将在TextField事件发生时被调用的回调
 */
typedef std::function<void(Ref*, EventType)> ccTextFieldCallback;


/**
 * 构造函数
 */
TextField();

/**
 * 构造函数
 * @return TextField实例
 */
static TextField* create();

/**
 * 构造函数
 * @param placeholder   占位符
 * @param fontName The  字体名
 * @param fontSize The  字体大小
 * @return TextField实例
 */
static TextField* create(const std::string& placeholder,
                         const std::string& fontName,
                         int fontSize);

/**
 * 设置TextField触摸范围
 * 触摸范围用于 "hitTest"
 * @param 触摸范围
 */
void setTouchSize(const Size &size);

/**
 * 获取TextField的当前触摸范围
 * @return 触摸范围
 */
Size getTouchSize()const;

/**
 * 启用切换启用触摸区域。
 * @param enable 是否允许触摸
 */
void setTouchAreaEnabled(bool enable);

virtual bool hitTest(const Vec2 &pt, const Camera* camera, Vec3 *p) const override;

/**
 * 设置占位符
 * @param value 占位符
 */
void setPlaceHolder(const std::string& value);

/**
 * 获取占位符
 * @return 占位符
 */
const std::string& getPlaceHolder()const;

/**
 * 设置占位符颜色
 * @param color 占位符颜色
 */
void setPlaceHolderColor(const Color3B& color);
void setPlaceHolderColor(const Color4B& color);

/**
 * 获取占位符颜色
 * @return 占位符颜色
 */
const Color4B& getPlaceHolderColor()const;

/**
 * 设置文本颜色
 * @param textColor 文本颜色
 */
void setTextColor(const Color4B& textColor);

/**
 * 获取文本颜色
 * @return 文本颜色
 */
const Color4B& getTextColor()const;

/**
 * 设置文本大小
 * @param size 文本大小
 */
void setFontSize(int size);

/**
 * 获取文本大小
 * @return 文本大小
 */
int getFontSize()const;

/**
 * 设置文本字体
 * @param name 字体名
 */
void setFontName(const std::string& name);

/**
 * 获取文本字体
 * @return 文本字体
 */
const std::string& getFontName()const;

/**
 * 设置文本
 * @param text 文本
 */
void setString(const std::string& text);

/**
 * 获取文本
 * @return 文本
 */
const std::string& getString()const;

/**
 * 启用最大长度限制
 * @param enable 是否启用
 */
void setMaxLengthEnabled(bool enable);

/**
 * 获取是否启用最大长度
 * @return 是否启用
 */
bool isMaxLengthEnabled()const;

/**
 * 设置长度限制
 * @param length 最大长度
 */
void setMaxLength(int length);

/**
 * 获取长度限制的长度
 * @return 长度
 */
int getMaxLength()const;

/**
 * 获取文本长度
 * @return 文本长度
 */
int getStringLength() const;

/**
 * 启用密文模式
 * @param enable 是否启用密文模式
 */
void setPasswordEnabled(bool enable);

/**
 * 获取是否启用了密文模式
 * @return 是否启用密文模式
 */
bool isPasswordEnabled()const;

/**
 * 设置密文模式字符样式
 * @param styleText 字符样式,默认为'*'
 */
void setPasswordStyleText(const char* styleText);

/**
 * 获取密文样式
 * @return 密文样式
 */
const char* getPasswordStyleText()const;

/**
 * 设置启用IME
 * @param attach 如果附加IME则为true,否则为false。
 */
void setAttachWithIME(bool attach);

/**
 * 查询IME是否附加。
 * @return 如果附加了IME,则为true;否则为false。
 */
bool getAttachWithIME()const;

/**
 * 设置与IME分离
 * @param detach 是否分离
 */
void setDetachWithIME(bool detach);

/**
 * 查询IME是否被分离
 * @return 是否分离
 */
bool getDetachWithIME()const;

/**
 * 启用插入文本模式
 * @param true,启用;false,未启用
 */
void setInsertText(bool insertText);

/**
 * 是否准备好插入文本
 * @return 如果插入文本准备就绪,则返回true,否则返回false
 */
bool getInsertText()const;

/**
 * 启用删除字符模式
 * @param deleteBackward true,启用;false,未启用
 */
void setDeleteBackward(bool deleteBackward);

/**
 * 是否准备好删除文本
 * @return true进行删除文本,否则为false。
 */
bool getDeleteBackward()const;

/**
 * 给TextField添加一个事件监听器,当某个预定义的事件发生时,回调将被调用。
 * @param target   事件对象
 * @param selecor  对调函数
 */
void addEventListener(const ccTextFieldCallback& callback);

/**
 * 打开键盘
 */
void attachWithIME();

/**
 * 设置文字渲染范围(即文本显示范围)
 * 注意:要实现该函数的效果,必须调用该对象的ignoreContentAdaptWithSize(false)
 * @param 渲染范围
 */
void setTextAreaSize(const Size &size);

/**
 * 设置水平方向对齐方式
 * @param alignment 对齐方式,查看TextHAlignment
 */
void setTextHorizontalAlignment(TextHAlignment alignment);

/**
 * 获取水平方向对齐方式
 * @return 对齐方式
 */
TextHAlignment getTextHorizontalAlignment() const;

/**
 * 设置垂直方向对齐方式
 * @param alignment 对齐方式,查看TextVAlignment
 */
void setTextVerticalAlignment(TextVAlignment alignment);

/**
 * 获取垂直方向对齐方式
 * @return 对齐方式
 */
TextVAlignment getTextVerticalAlignment() const;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值