1. 程式人生 > >cocos2d-js 控制元件

cocos2d-js 控制元件

參考文件

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.  
    emojiBt