Widget控件
衡翰翮
2023-12-01
var CustomTableViewCell = cc.TableViewCell.extend({
draw: function (ctx) {
this._super(ctx);
}
});
var HelloWorldLayer = cc.Layer.extend({
sprite:null,
ctor:function () {
this._super();
//获取到屏幕的大小
var size = cc.winSize;//var size = cc.director.getWinSize();
/***********************GUI获取控件对象****************************/
var root = ccs.uiReader.widgetFromJsonFile("");
var button = ccui.helper.seekWidgetByName(root,"123");
/***********************Widget****************************/
var widget = new ccui.Widget();
/*************与触摸相关的函数********/
widget.setTouchEnabled(true);//设置是否启用触摸事件
widget.isTouchEnabled();//判断是否启用触摸事件
widget.addTouchEventListener(this.touchEvent,this);//触摸事件的回调函数
widget.setSwallowTouches(true);
/*************与启用相关的函数********/
widget.setEnabled(false);//设置是否启用控件
widget.isEnabled();//获取控件是否启用
/*************与高亮相关的函数********/
widget.setBright(false);//设置控件是否高亮,注意要和上面的setEnabled搭配使用才能使外观变灰状态
widget.isBright();//获取控件是否高亮
widget.setHighlighted(false);//设置控件状态为高亮状态
widget.isHighlighted();//获取控件是否处于高亮状态
widget.setBrightStyle(ccui.Widget.BRIGHT_STYLE_HIGH_LIGHT);//设置高亮风格
/*************与焦点相关的函数********/
widget.isFocused();//查询是否拥有该焦点
widget.setFocused(false);//切换控件是否拥有焦点
widget.isFocusEnabled();//查询是否允许接受焦点
widget.setFocusEnabled(false);//切换是否允许接受焦点
widget.requestFocus();//请求获取焦点
widget.onFocusChange(lostFocus,getFocus);//焦点更改事件发生时会调用此方法
widget.getCurrentFocusedWidget();//获取当前拥有焦点的控件
/*************与位置相关的函数********/
widget.getLeftBoundary();//获取左边界在父节点坐标系中的位置
widget.getBottomBoundary();//获取下边界在父节点坐标系中的位置
widget.getRightBoundary();//获取右边界在父节点坐标系中的位置
widget.getTopBoundary();//获取上边界在父节点坐标系中的位置
widget.getWorldPosition();//获取控件在世界坐标系中的位置
/*************百分比和启用布局控件相关的函数********/
widget.getSizePercent();//获取控件的百分比尺寸
widget.setSizePercent(30);//设置控件的百分比尺寸
widget.isLayoutComponentEnabled();//获取是否启用布局组件的结果
widget.setLayoutComponentEnabled(false);//设置是否启用布局组件
this.addChild(widget);
/***********************Buuton继承于Widget****************************/
var button = new ccui.Button("ccs-res/cocosui/button.png", "ccs-res/cocosui/buttonHighlighted.png", "",1);//ccui.Widget.LOCAL_TEXTURE;ccui.Widget.PLIST_TEXTURE
/*************3个状态纹理的相关函数**************/
button.loadTextures("ccs-res/cocosui/button.png", "ccs-res/cocosui/buttonHighlighted.png", "",1);
button.loadTextureNormal("ccs-res/cocosui/button.png",1);
button.loadTexturePressed("ccs-res/cocosui/button.png",1);
button.loadTextureDisabled("ccs-res/cocosui/button.png",1);
/*************九宫格的相关函数**************/
button.isScale9Enabled();//判断按钮是否为九宫格模式
button.setScale9Enabled(true);//设置按钮为九宫格模式
/*************文本内容相关的函数**************/
button.getTitleText();//获取按钮文本内容
button.setTitleText("string");//设置按钮文本内容
button.getTitleColor();//获取按钮文本颜色
button.setTitleColor(cc.color(0x21,0x22,0x23,0x144));//设置按钮文本颜色
button.getTitleFontSize();//获取按钮文本字号大小
button.setTitleFontSize(cc.size(10));//设置按钮文本字号大小
button.getTitleFontName();//获取按钮文本名字
button.setTitleFontName("123");//设置按钮文本名字
/*************缩放效果相关的函数**************/
button.getZoomScale();//获取一个缩放比例
button.setZoomScale(0.6);//设置一个缩放比例
button.setPressedActionEnabled(false);//设置启用按钮被按下时的缩放的动作
button.setTouchEnabled(true);
button.setContentSize(cc.size(150, 48));
button.ignoreContentAdaptWithSize(false);如果设置为true,忽略内容适应,使用系统默认的渲染大小,与实际的图片资源大小无关
button.setPressedActionEnabled(true);//设置按钮是否启用点击缩放的效果
button.setZoomScale(0.3);//点击缩放到原来的0.3
button.setNormalizedPosition(0.5, 0.5) //Node的位置像素会根据它的父节点的尺寸大小计算
button.x = size / 2.0;
button.y = size / 2.0;
button.addTouchEventListener(this.touchEvent ,this);
//button.addClickEventListener(function(sender,type){
//switch (type){
// case ccui.Widget.TOUCH_BEGAN:
// console.log("TOUCH_BEGAN");
// break;
// case ccui.Widget.TOUCH_MOVED:
// console.log("TOUCH_MOVED");
// break;
// case ccui.Widget.TOUCH_ENDED:
// console.log("TOUCH_ENDED");
// break;
// case ccui.Widget.TOUCH_CANCELED:
// console.log("TOUCH_CANCELED");
// break;
// default:
// break;
//}
//});
this.addChild(button);
//说明:Widget对象中button.ignoreContentAdaptWithSize(false);和 button.setContentSize(cc.size(150, 48));同时使用起到自动缩放的功能。
/***********************CheckBox继承于Widget****************************/
var checkBox = new ccui.CheckBox("ccs-res/cocosui/check_box_normal.png", "ccs-res/cocosui/check_box_normal_press.png","ccs-res/cocosui/check_box_active.png","ccs-res/cocosui/check_box_normal_disable.png","ccs-res/cocosui/check_box_active_disable.png",cc.Widget.PLIST_TEXTURE);;
checkBox.loadTextures("ccs-res/cocosui/check_box_normal.png",//未选中常态纹理
"ccs-res/cocosui/check_box_normal_press.png",//背景选中状态纹理
"ccs-res/cocosui/check_box_active.png",//勾选选中状态纹理
"ccs-res/cocosui/check_box_normal_disable.png",//背景禁用状态纹理
"ccs-res/cocosui/check_box_active_disable.png",//勾选禁用状态纹理
ccui.Widget.PLIST_TEXTURE//纹理类型
);//加载相关状态纹理以及纹理类型
checkBox.loadTextureBackGround("ccs-res/cocosui/check_box_normal.png", ccui.Widget.PLIST_TEXTURE);//加载未选中常态纹理以及纹理类型
checkBox.loadTextureBackGroundSelected("ccs-res/cocosui/check_box_normal.png", ccui.Widget.PLIST_TEXTURE);//加载背景选中状态纹理以及纹理类型
checkBox.loadTextureFrontCross("ccs-res/cocosui/check_box_normal.png", ccui.Widget.PLIST_TEXTURE);//加载选中状态纹理以及纹理类型
checkBox.loadTextureBackGroundDisabled("ccs-res/cocosui/check_box_normal.png", ccui.Widget.PLIST_TEXTURE);//加载背景禁用状态纹理以及纹理类型
checkBox.loadTextureFrontCrossDisabled("ccs-res/cocosui/check_box_normal.png", ccui.Widget.PLIST_TEXTURE);//加载勾选禁用状态纹理以及纹理类型
checkBox.isSelected();//获取是否选中的结果
checkBox.setSelected(false);//设置是否选中
checkBox.addEventListener(this.selectedStateEvent, this);//添加事件监听器
checkBox.setEnabled(false);//不可点击
checkBox.setBright(false);//变灰
checkBox.ignoreContentAdaptWithSize(false);
checkBox.setZoomScale(0.5);
checkBox.setContentSize(cc.size(80,80));
checkBox.setTouchEnabled(true);
checkBox.x = size.width / 2.0;
checkBox.y = size.height / 2.0;
this.addChild(checkBox);
/***********************ImageView继承于Widget****************************/
var imageView = new ccui.ImageView("ccs-res/cocosui/buttonHighlighted.png");
imageView.loadTexture("ccs-res/cocosui/buttonHighlighted.png",ccui.Widget.PLIST_TEXTURE);//加载纹理图片以及纹理图片类型
imageView.setTextureRect(cc.rect(0,0,20,30));//设置纹理区域
imageView.setScale9Enabled(true);//设置为九宫格
imageView.isScale9Enabled();//获取是否为九宫格的结果
imageView.setContentSize(cc.size(200, 80));
imageView.setPosition(cc.p(size.width / 2, size.height / 2));
imageView.setSizeType(ccui.Widget.SIZE_PERCENT);//设置大小类型
imageView.setPositionType(ccui.Widget.POSITION_PERCENT);//设置位置类型
imageView.setSizePercent(cc.p(0.5, 0.5));//设置大小比例
imageView.setPositionPercent(cc.p(0.5, 0.5));//设置位置比例
imageView.setFlippedX(true);
imageView.setScale(0.5);
imageView.ignoreContentAdaptWithSize(false);
imageView.setTouchEnabled(true);
imageView.addTouchEventListener(function(sender, type){
if (type == ccui.Widget.TOUCH_ENDED) {
console.log("TOUCH_ENDED");
}
});
this.addChild(imageView);
/***********************Text继承于Widget****************************/
var text = new ccui.Text("TextArea Widget can line wrap","AmericanTypewriter",32);//文本内容、字体文件或者字体名称、字体大小
text.setString("Label Effect");//设置内容
text.getString();//获取内容
text.getFontSize();//获取字号大小
text.setFontSize(30);//设置字号大小
text.getFontName();//获取字体文件或名称
text.setFontName("Marker Felt");//设置字体文件或名称
text.getTextColor();//获取文本颜色
text.setTextColor(cc.color(100,10,150,255));//设置文本颜色
text.getType();//获取类型 ccui.Text.Type.SYSTEM:表示系统字体 ccui.Text.Type.TTF:表示TTF文字字体
text.getTextHorizontalAlignment();//获取文本水平对齐方式
text.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_LEFT);//设置文本水平对齐方式 TEXT_ALIGNMENT_RIGHT、TEXT_ALIGNMENT_CENTER
text.getTextVerticalAlignment();//获取文本垂直对齐方式
text.setTextVerticalAlignment(cc.VERTICAL_TEXT_ALIGNMENT_TOP);//设置文本垂直对齐方式VERTICAL_TEXT_ALIGNMENT_CENTER、VERTICAL_TEXT_ALIGNMENT_BUTTOM
text.enableShadow(cc.color.GRAY, cc.p(10, -10),false);//启用文本阴影效果,仅TTF字体对象有效
text.enableOutline(cc.color.BLUE, 2);//启用文本描边效果,仅TTF字体对象有效
text.enableGlow(cc.color.RED);//启用文本荧光效果,仅TTF字体对象有效
//text.boundingWidth = 280;
//text.boundingHeight = 150;
text.attr({
textAlign: cc.TEXT_ALIGNMENT_CENTER,
string: "Label TTF",
font: "32px mericanTypewriter",
x: this._widget.width / 2,
y: this._widget.height / 2 - text.height / 8
});
text.ignoreContentAdaptWithSize(false);//为TRUE时忽略自定义的大小,为FALSE时自定义大小是多少就是多少
text.setTextAreaSize(cc.size(60,60));//设置文本区域
text.setContentSize(cc.size(280, 150));//设置Text的大小
text.setTouchScaleChangeEnabled(true);//激活触摸缩放
text.setColor(cc.color(159, 168, 176));
text.setTouchEnabled(true);
text.addTouchEventListener(function(sender, type){
if (type == ccui.Widget.TOUCH_ENDED){
if (text.width == 280){
text.setContentSize(cc.size(380,100));
}else {
text.setContentSize(cc.size(280, 150));
}
}
});
text.setPosition(size.width / 2, size.height / 2 - text.height / 8);
this.addChild(text);
/***********************LoadingBar继承于Widget****************************/
var loadingBar = new ccui.LoadingBar();
loadingBar.setName("LoadingBar");
loadingBar.loadTexture("ccs-res/cocosui/sliderProgress.png");
loadingBar.setDirection(ccui.LoadingBar.TYPE_RIGHT);//设置方向
loadingBar.setPercent(0);//设置进度比例
loadingBar.x = size.width / 2;
loadingBar.y = size.height / 2 + loadingBar.height / 4;
loadingBar.setScale9Enabled(true);
loadingBar.setCapInsets(cc.rect(0, 0, 0, 0));//和图片缩放有关,特别是在九宫格里用的最多
loadingBar.setContentSize(cc.size(300, 30));
this.addChild(loadingBar);
/***********************RichText继承于Widget****************************/
var richText = new ccui.RichText();
richText.ignoreContentAdaptWithSize(false);
richText.x = size.width / 2;
richText.y = size.height / 2;
richText.width = 120;
richText.height = 100;
//整句话可以采取分段形式
//放入一段文本
var re1 = new ccui.RichElementText(1, cc.color.WHITE, 255, "This color is white. ", "Helvetica", 10);
var re2 = new ccui.RichElementText(2, cc.color.YELLOW, 255, "And this is yellow. ", "Helvetica", 10);
var re3 = new ccui.RichElementText(3, cc.color.BLUE, 255, "This one is blue. ", "Helvetica", 10);
var re4 = new ccui.RichElementText(4, cc.color.GREEN, 255, "And green. ", "Helvetica", 10);
var re5 = new ccui.RichElementText(5, cc.color.RED, 255, "Last one is red ", "Helvetica", 10);
//放入一张图片
var reimg = new ccui.RichElementImage(6, cc.color.WHITE, 255, "ccs-res/cocosui/sliderballnormal.png");
//放入一个动画
ccs.armatureDataManager.addArmatureFileInfo("ccs-res/cocosui/100/100.ExportJson");
var pAr = new ccs.Armature("100");
pAr.getAnimation().play("Animation1");
var recustom = new ccui.RichElementCustomNode(1, cc.color.WHITE, 255, pAr);
var re6 = new ccui.RichElementText(7, cc.color.ORANGE, 255, "Have fun!! ", "Helvetica", 10);
richText.pushBackElement(re1);
richText.insertElement(re2, 1);
richText.pushBackElement(re3);
richText.pushBackElement(re4);
richText.pushBackElement(re5);
richText.insertElement(reimg, 2);
richText.pushBackElement(recustom);
richText.pushBackElement(re6);
this.addChild(richText);
/***********************TextField继承于Widget****************************/
var textField = new ccui.TextField("PlaceHolder", "Marker Felt", 30);
textField.x = size.width / 2.0;
textField.y = size.height / 2.0;
textField.onTextFieldAttachWithIME(this.textFieldEvent);// 挂载输入法时的回调函数 并非这里面实现的内容,只是借用这函数,函数带一个参数
textField.onTextFieldDetachWithIME(this.textFieldEvent);// 取消挂载输入法时的回调函数
textField.onTextFieldInsertText(this.textFieldEvent,"123",3);//插入文本时的回调函数,其参数如下,sender:文本编辑框实例。text:将要插入的字符串 len:j将要插入的字符串长度
textField.onTextFieldDeleteBackward(this.textFieldEvent,"123",3);//删除文本时的回调函数,其参数如下。sender:文本编辑框实例。text:将要删除的字符串 len:j将要插入的字符串长度
textField.insertText("123",3);//插入文本
textField.deleteBackward();//回退删除
textField.openIME();//打开输入法编辑器
textField.closeIME();//关闭输入法编辑器
textField.setMaxLengthEnabled(false);//启用最大长度限制
textField.isMaxLengthEnabled();//获取是否启用了最大长度限制的结果
textField.setMaxLength(29);//设置最大长度
textField.getMaxLength();//获取最大长度
textField.getCharCount();//获取总共输入的字数
textField.setPasswordEnabled(false);//启用密码输入模式
textField.isPasswordEnabled();//获取是否启用密码输入模式的结果
textField.setPasswordStyleText("234");//设置密码模式下的文本样式
textField.setPasswordText("123");//设置密码
textField.setAttachWithIME(false);//设置是否挂载输入法编辑器
textField.getAttachWithIME();//获取是否挂载输入法编辑器的结果
textField.setDetachWithIME(false);//设置是否取消挂载输入法编辑器
textField.getDetachWithIME();//获取是否取消挂载输入法编辑器的结果
textField.setInsertText("123");//设置是否允许文本输入
textField.getInsertText();//获取是否允许文本输入的结果
textField.setDeleteBackward(false);//设置是否允许回删
textField.getDeleteBackward();//获取是否允许回删的结果
textField.setTouchEnabled(true);
textField.ignoreContentAdaptWithSize(false);
textField.setContentSize(240, 120);//和上面一句设置换行
textField.getVirtualRenderer().setLineBreakWithoutSpace(true);//这句开启换行功能
textField.fontName = "Marker Felt";
textField.fontSize = 30;
textField.placeHolder = "input words here";
textField.setString("input words here");
textField.setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_CENTER);
textField.setTextVerticalAlignment(cc.TEXT_ALIGNMENT_CENTER);
textField.addEventListener(this.textFieldEvent, this);
this.addChild(textField);
/***********************Slider继承于Widget****************************/
var slider = new ccui.Slider();
slider.setTouchEnabled(true);
slider.loadBarTexture("ccs-res/cocosui/sliderTrack.png");
slider.loadSlidBallTextures("ccs-res/cocosui/sliderThumb.png", "ccs-res/cocosui/sliderThumb.png", "");
slider.loadProgressBarTexture("ccs-res/cocosui/sliderProgress.png");
slider.x = size.width / 2.0;
slider.y = size.height / 2.0;
slider.addTouchEventListener(this.sliderEvent, this);
this.addChild(slider);
/***********************Layout继承于Widget****************************/
var layout = new ccui.Layout();
/**************与背景颜色相关的函数*******************/
layout.getBackGroundColorType();//获取背景颜色类型
layout.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);//设置背景颜色类型 单色
layout.getBackGroundColor();//获取背景颜色
layout.setBackGroundColor(cc.color(128, 128, 128));//设置背景颜色
layout.getBackGroundStartColor();//获取渐变背景颜色开始的值
layout.getBackGroundEndColor();//获取渐变背景颜色结束的值
layout.getBackGroundColorOpacity();//获取背景颜色不透明度
layout.setBackGroundColorOpacity(123);//获取背景颜色向量
layout.getBackGroundColorVector();//获取背景颜色向量
layout.setBackGroundColorVector(cc.vector());//设置背景颜色向量
/**************与背景颜色图片的函数*******************/
layout.setBackGroundImage("123",ccui.Widget.PLIST_TEXTURE);//设置背景图片
layout.removeBackGroundImage();//移除背景图片
layout.getBackGroundImageColor();//获取背景图片颜色
layout.setBackGroundImageColor(cc.color(125,125,125,125));//设置背景图片颜色
layout.getBackGroundImageOpacity();//获取背景图片不透明度
layout.setBackGroundImageOpacity(123);//设置背景图片不透明度
layout.getBackGroundImageTextureSize();//获取背景图片纹理大小
layout.isBackGroundImageScale9Enabled();//背景图片是否启用九宫格
layout.setBackGroundImageScale9Enabled(false);//开启/关闭背景图片九宫格模式
/**************其他相关的函数*******************/
layout.setLayoutType(ccui.LayoutParameter.LINEAR_VERTICAL);//设置布局类型
layout.getLayoutType();//获得布局类型
layout.requestDoLayout();//请求刷新布局
layout.forceDoLayout();//强制刷新布局
layout.isClippingEnabled();//获取是否开启了裁剪的结果
layout.setClippingEnabled(false);//设置是否开启裁剪
layout.isLoopFocus();//获取是否启用循环焦点的结果
layout.setLoopFocus(false);//设置是否启用循环焦点
layout.isPassFocusToChild();//获取是否允许传递焦点到子节点上的结果
layout.setPassFocusToChild(false);//设置是否允许传递焦点到子节点上
layout.getClippingType();//获取裁剪类型
layout.setClippingType(1);//设置裁剪类型
layout.findNextFocusedWidget(ccui.Widget.LEFT,this);//获取指定方向中的下一个能够具有焦点的控件
//裁剪必须结合下面两个函数使用
layout.setContentSize(cc.size(280, 150));
layout.setClippingEnabled(true);//允许剪裁
this.addChild(layout);
this.button = new ccui.Button();
this.button.setTouchEnabled(true);
this.button.loadTextures("ccs-res/cocosui/animationbuttonnormal.png", "ccs-res/cocosui/animationbuttonpressed.png", "");
this.button.x = this.button.width / 2;
this.button.y = layoutRect.height - this.button.height / 2;
layout.addChild(this.button);
//垂直布局
//布局参数
var lp = new ccui.LinearLayoutParameter();
this.button.setLayoutParameter(lp);
lp.setGravity(ccui.LinearLayoutParameter.CENTER_HORIZONTAL);//线性布局对齐方式
lp.setMargin(new ccui.Margin(0,10,0,10))
this.button_scale9 = new ccui.Button();
this.button_scale9.setTouchEnabled(true);
this.button_scale9.setScale9Enabled(true);
this.button_scale9.loadTextures("ccs-res/cocosui/backtotopnormal.png", "ccs-res/cocosui/backtotoppressed.png", "");
this.button_scale9.setTitleText("Text Button");
this.button_scale9.x = size / 2;
this.button_scale9.y = size / 2;
layout.addChild(this.button_scale9);
/***********************ScrollView继承于Layout****************************/
var scrollView = new ccui.ScrollView();
this.addChild(scrollView);
var imageView = new ccui.ImageView();
imageView.loadTexture("ccs-res/cocosui/ccicon.png");
//ScrollView布局格式为DIR_HORIZONTAL使用这个
var innerWidth = scrollView.width;
var innerHeight = scrollView.height + imageView.height;
//ScrollView布局格式为DIR_HORIZONTAL使用这个
var scrollViewRect = scrollView.getContentSize();
var innerWidth = scrollViewRect.width + imageView.getContentSize().width;
var innerHeight = scrollViewRect.height;
/*****************与方向相关的函数*******************/
scrollView.getDirection();//获取方向
scrollView.setDirection(ccui.ScrollView.DIR_VERTICAL);//设置方向
/*****************与惯性、弹力效果相关的函数*******************/
scrollView.isInertiaScrollEnabled();//获取是否开启滚动惯性效果的结果
scrollView.setInertiaScrollEnabled(false);//设置是否开启滚动惯性效果
scrollView.isBounceEnabled();//获取是否开启弹力效果的结果
scrollView.setBounceEnabled(false);//设置是否开启弹力效果
/*****************与容器及其大小相关的函数*******************/
scrollView.getInnerContainer();//获取滚动视图的内部布局容器
scrollView.getInnerContainerSize();//获取内部容器的大小
scrollView.setInnerContainerSize(cc.size(innerWidth, innerHeight));//设置内部容器的大小
/*****************与触摸事件相关的函数*******************/
scrollView.onTouchBegan(function (touch,event) {
return true;
});
scrollView.onTouchMoved(function (touch,event) {
});
scrollView.onTouchEnded(function (touch,event) {
});
scrollView.onTouchCancelled(function (touch,event) {
});
scrollView.addEventListener(function (touch,event) {
});
/*****************与滚动相关的函数*******************/
scrollView.scrollToBottom(0.2,false);//滚动到滚动视图的底部 持续时间、滚动速度是否衰减
scrollView.scrollToTop(0.2,false);//滚动到滚动视图的顶部
scrollView.scrollToLeft(0.2,false);//滚动到视图的左端
scrollView.scrollToRight(0.2,false);//滚动到视图的右端
scrollView.scrollToTopLeft(0.2,false);//滚动到视图的左上角
scrollView.scrollToTopRight(0.2,false);滚动到视图的右上角
scrollView.scrollToBottomLeft(0.2,false);滚动到视图的左下角
scrollView.scrollToBottomRight(0.2,false);滚动到视图的右下角
scrollView.scrollToPercentVertical(10,0.2,false);//按百分比竖直滚动
scrollView.scrollToPercentHorizontal(10,0.2,false);//按百分比水平滚动
scrollView.scrollToPercentBothDirection(cc.p(10,10),0.2,false);//竖直方向和水平方向分别按一定的百分比滚动
/*****************与跳跃相关的函数*******************/
// cocos2d-js中listView的jumpToBottom()方法无效的解决方法
// 本文提供两种解决方法:
// 一、延时调用
// listView2.runAction(cc.sequence(cc.delayTime(0.1),cc.callFunc(function () {
// listView2.jumpToBottom();
// })),this);
// 在listViwe创建(从cocostudio中获取)完毕并添加Item之后延时调用jumpToBottom()方法!
// 二、更新视图
// var listView2 = ccui.helper.seekWidgetByName(this.mainscene,"ListView_2");
// listView2.refreshView();
// ……添加Item
// listView2.jumpToBottom();
// 在listView创建(获取)之后先调用refreshView()方法更新list,再添加Item之后调用jumpToBottom()方法!
//三、而scrollToBottom()暂时只能用延时的方法,解决初始化直接用不起作用的bug!
scrollView.jumpToBottom();//跳到视图底端
scrollView.jumpToTop();//跳到视图顶端
scrollView.jumpToLeft();//跳到视图左边
scrollView.jumpToRight();//跳到视图右边
scrollView.jumpToTopLeft();//跳到视图左上角
scrollView.jumpToTopRight();//跳到视图右上角
scrollView.jumpToBottomLeft();//跳到视图右上角
scrollView.jumpToBottomRight();//跳到视图右下角
scrollView.jumpToPercentVertical(10);//竖直方向跳到指定百分比位置
scrollView.jumpToPercentHorizontal(10);//水平方向跳到指定百分比位置
scrollView.jumpToPercentBothDirection(cc.p(10,10));//竖直和水平方向跳到指定百分比位置
scrollView.setTouchEnabled(true);
scrollView.setContentSize(cc.size(280, 150));
scrollView.x = (size.width) / 2 ;
scrollView.y = size.height / 2;
scrollView.setBackGroundColor(cc.color.GREEN);
scrollView.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID);
var button = new ccui.Button();
button.setTouchEnabled(true);
button.loadTextures("ccs-res/cocosui/animationbuttonnormal.png", "ccs-res/cocosui/animationbuttonpressed.png", "");
button.x = innerWidth / 2;
button.y = scrollView.getInnerContainerSize().height - button.height / 2;
scrollView.addChild(button);
var textButton = new ccui.Button();
textButton.setTouchEnabled(true);
textButton.loadTextures("ccs-res/cocosui/backtotopnormal.png", "ccs-res/cocosui/backtotoppressed.png", "");
textButton.setTitleText("Text Button");
textButton.x = innerWidth / 2;
textButton.y = button.getBottomBoundary() - button.height;
scrollView.addChild(textButton);
var button_scale9 = new ccui.Button();
button_scale9.setTouchEnabled(true);
button_scale9.setScale9Enabled(true);
button_scale9.loadTextures("ccs-res/cocosui/button.png", "ccs-res/cocosui/buttonHighlighted.png", "");
button_scale9.width = 100;
button_scale9.height = 32;
button_scale9.x = innerWidth / 2;
button_scale9.y = textButton.getBottomBoundary() - textButton.height;
scrollView.addChild(button_scale9);
//ScrollView布局格式为DIR_VERTICAL使用这个
imageView.x = innerWidth / 2;
imageView.y = imageView.height / 2;
//ScrollView布局格式为DIR_HORIZONTAL使用这个
imageView.x = innerWidth - imageView.width / 2;
imageView.y = button_scale9.getBottomBoundary() - button_scale9.height / 2;
scrollView.addChild(imageView);
/***********************TableView继承于ScrollView****************************/
//创建一个tableview
var tableView = new cc.TableView(this, cc.size(500, 100 * 4));
tableView.setDirection(cc.SCROLLVIEW_DIRECTION_VERTICAL);设置tableview的滑动的方向
tableView.x = 100;
tableView.y = 200;
// 设置委托
tableView.setDelegate(this);
tableView.setVerticalFillOrder(cc.TABLEVIEW_FILL_TOPDOWN);//tableView填充方式 (cc.TABLEVIEW_FILL_BOTTOMUP)
this.addChild(tableView);
//更新tableview
tableView.reloadData();
/***********************ListView继承于ScrollView****************************/
this.listView = new ccui.ListView();
/***************项操作的相关函数*****************/
this.listView.setItemModel(widget);//设置项的模型
this.listView.pushBackDefaultItem();//插入一个默认项(通过克隆模式创建)到列表视图的尾部
this.listView.insertDefaultItem(1);//插入一个默认项(通过克隆模式创建)到列表视图的指定位置
this.listView.pushBackCustomItem(widget);//插入一个自定义项到列表视图的尾部
this.listView.insertCustomItem(widget,1);//插入自定义UI控件到列表视图中指定索引处
this.listView.removeItem(1);//删除给定索引的项
this.listView.removeLastItem();//删除最后一个项
this.listView.removeAllItems();//删除所有项
this.listView.getItem(1);//获取给定索引的项
this.listView.getItems();//获取所有项
this.listView.getIndex(widget);//获取指定项的索引
this.listView.getCurSelectedIndex();//获取当前所选项的索引
/***************边距、对齐方式以及方向相关的函数*****************/
this.listView.getItemsMargin();//获取每个项之间的边距
this.listView.setItemsMargin(1);//设置每个项之间的边距
this.listView.getGravity();//获取对齐方式
this.listView.setGravity(ccui.ListView.GRAVITY_RIGHT);//设置对齐方式
this.listView.getDirection();//获取方向
this.listView.setDirection(1);//设置方向
/***************刷新相关的函数*****************/
this.listView.requestRefreshView();//请求刷新视图和布局
this.listView.refreshView();//刷新列表视图的视图
this.listView.forceDoLayout();//强制刷新控件的布局
this.listView.doLayout();//请求刷星控件的布局
this.listView.setDirection(ccui.ScrollView.DIR_VERTICAL);//方向
this.listView.setTouchEnabled(true);
this.listView.setBounceEnabled(true);//是否反弹
this.listView.setBackGroundImage("ccs-res/cocosui/green_edit.png");//背景图片
this.listView.setBackGroundImageScale9Enabled(true);//九宫格
this.listView.setScrollBarWidth(30); //滚动条的宽度
this.listView.setScrollBarColor(cc.RED); //滚动条的颜色
this.listView.setScrollBarPositionFromCorner(cc.p(7, 7));
this.listView.setContentSize(cc.size(240, 130));
this.listView.setAnchorPoint(cc.p(0.5 ,0.5));
this.listView.x = size/ 2;
this.listView.y = size / 2;
this.listView.addEventListener(this.selectedItemEvent, this);
this.addChild(this.listView);
//创建一个按钮
var default_button = new ccui.Button();
default_button.setName("TextButton");
default_button.setTouchEnabled(true);
default_button.loadTextures("ccs-res/cocosui/backtotoppressed.png", "ccs-res/cocosui/backtotopnormal.png", "");
//创建layout(模型)
var default_item = new ccui.Layout();
default_item.setTouchEnabled(true);
default_item.setContentSize(default_button.getContentSize());
default_item.width = this.listView.width;
default_button.x = default_item.width / 2;
default_button.y = default_item.height / 2;
default_item.addChild(default_button);
this.listView.setItemModel(default_item);//设置模型
this._array = [];
for (var i = 0; i < this._totalCount; ++i) {
this._array.push("item_" + i);
}
for(var i = 0; i < 100; ++i) {
if (i < 8) {
var item = default_item.clone();
item.setTag(i);
var btn = item.getChildByName('TextButton');
btn.setTitleText(this._array[i]);
this.listView.pushBackCustomItem(item);
}
}
/***********************PageView继承于ListView****************************/
var pageView = new ccui.PageView();
/****************添加、删除、查询页相关的函数******************/
pageView.addPage(layout);//往分页视图的最后插入一页
pageView.addWidgetToPage(widget,1,false);//把一个UI控件添加到分页视图中
pageView.insertPage(layout,1);//在指定位置插入一页
pageView.removePage(layout);//移除一页
pageView.removePageAtIndex(1);//移除指定位置的页
pageView.removeAllPages();//移除所有页
pageView.setCurrentPageIndex(1);//跳入指定的页
pageView.getCurrentPageIndex();//获取当前显示页的索引号
pageView.getPages();//获取所有页的列表
pageView.getPage(1);//获取指定的页
//cocos2d-js中PageView的scrollToPage()方法直接使用无效的解决方法
//contentPageView.runAction(cc.sequence(cc.delayTime(0.1),cc.callFunc(function () {
//contentPageView.scrollToPage(index);
//})),this);
pageView.scrollToPage(1);//滚动到一个指定的页
/****************滑动临界值相关的函数******************/
pageView.setCustomScrollThreshold(1);//设置自定义滚动临界值
pageView.getCustomScrollThreshold();//获取自定义滚动临界值
pageView.setUsingCustomScrollThreshold(false);//设置是否使用自定义滚动临界值
pageView.isUsingCustomScrollThreshold();//获取是否使用自定义滚动临界值的结果
pageView.addEventListener(this.pageViewEvent, this);
pageView.setTouchEnabled(true);
pageView.setContentSize(cc.size(240, 130));
var backgroundSize = background.getContentSize();
pageView.setPosition(cc.p((size.width - backgroundSize.width) / 2.0 +
(backgroundSize.width - pageView.getContentSize().width) / 2.0,
(size.height - backgroundSize.height) / 2.0 +
(backgroundSize.height - pageView.getContentSize().height) / 2.0));
for (var i = 0; i < 3; ++i) {
//layout
var layout = new ccui.Layout();
layout.setContentSize(cc.size(240, 130));
var layoutRect = layout.getContentSize();
//imageView
var imageView = new ccui.ImageView();
imageView.setTouchEnabled(true);
imageView.setScale9Enabled(true);
imageView.loadTexture("ccs-res/cocosui/scrollviewbg.png");
imageView.setContentSize(cc.size(240, 130));
imageView.x = layoutRect.width / 2;
imageView.y = layoutRect.height / 2;
layout.addChild(imageView);
var text = new ccui.Text();
text.string = "page" + (i + 1);
text.font = "30px 'Marker Felt'";
text.color = cc.color(192, 192, 192);
text.x = layoutRect.width / 2;
text.y = layoutRect.height / 2;
layout.addChild(text);
pageView.insertPage(layout, i);
}
this.addChild(pageView);
/***********************EditBox****************************/
var editBox = new ccui.EditBox(cc.size(360.00,53.00),new cc.Scale9Sprite("ccs-res/cocosui/sliderThumb.png"));
editBox.x = size.width/2;
editBox.y = size.height/2;
editBox.setDelegate(this);
editBox.setMaxLength(20);
editBox.setPlaceHolder("点击输出账号");
editBox.setInputFlag(cc.EDITBOX_INPUT_FLAG_SENSITIVE);//修改为不使用密文
editBox.setInputMode(cc.EDITBOX_INPUT_MODE_ANY);
editBox.setReturnType(cc.KEYBOARD_RETURNTYPE_DONE);
this.addChild(editBox);
/***********************Scale9Sprite****************************/
var sprTV = new cc.Scale9Sprite("ccs-res/cocosui/sliderThumb.png", cc.rect(0, 0, 26, 26), cc.rect(10, 10, 7, 7));
sprTV.x = size.width/2;
sprTV.y = size.height/2;
sprTV.width = sprTV.width + 20;
sprTV.height = sprTV.height + 20;
this.addChild(sprTV, 5);
return true;
},
/********************************Button***********************************/
touchEvent: function (sender,type) {
switch (type){
case ccui.Widget.TOUCH_BEGAN:
console.log("TOUCH_BEGAN");
break;
case ccui.Widget.TOUCH_MOVED:
console.log("TOUCH_MOVED");
break;
case ccui.Widget.TOUCH_ENDED:
console.log("TOUCH_ENDED");
break;
case ccui.Widget.TOUCH_CANCELED:
console.log("TOUCH_CANCELED");
break;
default:
break;
}
},
/********************************CheckBox***********************************/
selectedStateEvent: function (sender, type) {
switch (type) {
case ccui.CheckBox.EVENT_UNSELECTED:
console.log("EVENT_UNSELECTED");
break;
case ccui.CheckBox.EVENT_SELECTED:
console.log("EVENT_SELECTED");
break;
default:
break;
}
},
/********************************ListView***********************************/
selectedItemEvent: function (sender, type) {
switch (type) {
case ccui.ListView.EVENT_SELECTED_ITEM:
var listViewEx = sender;
var item = listViewEx.getItem(listViewEx.getCurSelectedIndex());
cc.log("select child index = " + item.getTag());
break;
default:
break;
}
},
/********************************PageView***********************************/
pageViewEvent: function (sender, type) {
switch (type) {
case ccui.PageView.EVENT_TURNING:
var pageView = sender;
console.log("page = " + (pageView.getCurrentPageIndex().valueOf()-0 + 1));
break;
default:
break;
}
},
/********************************Slider***********************************/
sliderEvent: function (sender, type) {
switch (type) {
case ccui.Slider.EVENT_PERCENT_CHANGED:
var slider = sender;
var percent = slider.getPercent();
console.log(percent.toFixed(0));
break;
default:
break;
}
},
/********************************TextField***********************************/
textFieldEvent: function (textField, type) {
switch (type) {
case ccui.TextField.EVENT_ATTACH_WITH_IME://光标进入输入框
console.log("EVENT_ATTACH_WITH_IME");
break;
case ccui.TextField.EVENT_DETACH_WITH_IME://光标离开输入框
console.log("EVENT_DETACH_WITH_IME");
break;
case ccui.TextField.EVENT_INSERT_TEXT://输入文本
console.log("EVENT_INSERT_TEXT");
break;
case ccui.TextField.EVENT_DELETE_BACKWARD://删除文本
console.log("EVENT_DELETE_BACKWARD");
break;
default:
break;
}
},
/********************************EditBox***********************************/
editBoxEditingDidBegin: function (editBox) {
cc.log("editBox " + editBox.getName() + " DidBegin !");
},
editBoxEditingDidEnd: function (editBox) {
cc.log("editBox " + editBox.getName() + " DidEnd !");
},
editBoxTextChanged: function (editBox, text) {
cc.log("editBox " + editBox.getName() + ", TextChanged, text: " + text);
},
editBoxReturn: function (editBox) {
cc.log("editBox " + editBox.getName() + " was returned !");
},
/********************************Slider***********************************/
onSliderEvent: function (sender, type) {
switch (type) {
case ccui.Slider.EVENT_PERCENT_CHANGED://滑块滑动
var percent = sender.getPercent();
console.log("百分比: "+percent.toFixed(0));//取整输出
break;
default:
break;
}
},
/********************************TableVew***********************************/
//TableView继承ScrollView有这俩个方法,不需要添加任何内容
scrollViewDidScroll: function (view) {
},
scrollViewDidZoom: function (view) {
},
//设置点击cell后的回调函数
tableCellTouched: function (table, cell) {
cc.log("cell touched at index: " + cell.getIdx());
},
//设置cell大小
tableCellSizeForIndex: function (table, idx) {
return cc.size(100, 135);
},
//添加Cell
tableCellAtIndex: function (table, idx) {
var strValue = idx.toFixed(0);
//获得一个cell,滑动cell的时候会执行这个方法,把没有显示(没渲染)的cell拿过来,更改内容,为了减小内存的开销
var cell = table.dequeueCell();
var label;
if (!cell) {
cell = new CustomTableViewCell();
//添加图片
var sprite = new cc.Sprite("res/1.png");
sprite.anchorX = 0;
sprite.anchorY = 0;
sprite.x = 0;
sprite.y = 0;
cell.addChild(sprite);
// 添加文本
label = new cc.LabelTTF(strValue, "Helvetica", 50);
label.x = 0;
label.y = 0;
label.anchorX = 0;
label.anchorY = 0;
label.color = cc.color(255, 0, 0, 255);
label.tag = 123;
cell.addChild(label);
} else {
//更改文本信息
label = cell.getChildByTag(123);
label.setString(strValue);
}
return cell;
},
//设置cell个数
numberOfCellsInTableView: function (table) {
return 10;
}
});
var HelloWorldScene = cc.Scene.extend({
onEnter:function () {
this._super();
var layer = new HelloWorldLayer();
this.addChild(layer);
}
});