@251804974 写道:
下面是实际代码。。。moveToIndex里面调用setContentOffset()显示 TypeError: self.getViewSize is not a function,不知道什么原因,用self.setSize可以,用self.setViewSize不行。
//==========================使用实例================
//ui测试
function testui(){
preloadResPlist(plist_currencyButton);
var scene = new cc.Scene();var reslist = ["currencyButton/2.png","currencyButton/2.png","currencyButton/2.png","currencyButton/2.png","currencyButton/2.png","currencyButton/2.png","currencyButton/2.png"]; var selectlist = ["currencyButton/4.png","currencyButton/4.png","currencyButton/4.png","currencyButton/4.png","currencyButton/4.png","currencyButton/4.png","currencyButton/4.png"]; var test = new testscrollview(reslist); test.setBounceEnabled(true); test.setSize(cc.size(720,300)).setDirection(ccui.ScrollView.DIR_VERTICAL).setSelectList(selectlist).createListView(); test.setPosition(cc.p(0,300)); test.moveToIndex(3); scene.addChild(test); cc.director.runScene(scene);
};
var testscrollview = ccui.ScrollView.extend({
//外部参数
reslist:null, //按钮资源列表
selectreslist:null, //选中资源列表
direction:null, //方向 水平从左到右 垂直从上到下 ccui.ScrollView.DIR_VERTICAL ccui.ScrollView.DIR_HORIZONTAL
click_callback:null, //点击回调
itemspace:0, //item间隔//内部参数 itemlist:null, //item列表 selected:null, // 选中tag currentselect:null, //当前选中 itemsize:null, //item尺寸,包含宽高 innersize:null, //内部宽高 ctor : function(reslist,click_callback){ this._super(); var self = this; this.itemlist = []; this.setResList(reslist); this.setItemClickCallBack(click_callback); }, onExist:function(){ this._super(); }, createListView:function(){ var self = this; var pos = cc.p(0,0); for(var i = 0; i < this.reslist.length; i++) { var item = new cc.Sprite(this.reslist[i]); var itemClick = function(sender,type){ if (type != ccui.Widget.TOUCH_ENDED) { return; } if (self.currentselect.index == sender.index) {return;} self.currentselect = sender; self.selectIndex(sender.index); }; var item = new ccui.Button(); item.loadTextures(this.reslist[i],"", this.selectreslist[i],ccui.Widget.PLIST_TEXTURE); item.addTouchEventListener(itemClick); item.index = i; if (!self.currentselect) {self.currentselect = item;} if (!this.itemsize) { this.itemsize = cc.size(item.width,item.height); } if (!this.innersize){ if (this.direction == ccui.ScrollView.DIR_VERTICAL) { this.innersize = cc.size(Math.max(this.itemsize.width,this.width),Math.max((this.itemsize.height+this.itemspace)*this.reslist.length-this.itemspace,this.height)); } else { this.innersize = cc.size(Math.max((this.itemsize.width+this.itemspace)*this.reslist.length-this.itemspace,this.width),Math.max(this.itemsize.height,this.height)); } cc.log("=======================size="+this.innersize.width); this.setInnerContainerSize(this.innersize); } if (this.direction == ccui.ScrollView.DIR_VERTICAL) { pos = cc.p(this.innersize.width/2,(this.innersize.height-(this.itemsize.height+this.itemspace)*i-this.itemsize.height/2)); } else { pos = cc.p((this.itemsize.width+this.itemspace)*i+this.itemsize.width/2,this.innersize.height/2); } this.addChild(item); item.setPosition(pos); } this.selectIndex(0); }, selectIndex:function(index){ var self = this; if (self.selected) {self.selected.setEnabled(true);} self.currentselect.setEnabled(false); self.selected = self.currentselect; if (self.click_callback) {click_callback(item);} }, setSize:function(size){ this._super(size); return this; }, setItemSpace:function(space){ this.itemspace = space; return this; }, setItemSize:function(size){ this.itemsize = size; return this; }, setItemClickCallBack:function(callback){ this.click_callback = callback; return this; }, setDirection:function(direction){ this.direction = direction; this._super(direction); return this; }, setSelectList:function(selectlist){ this.selectreslist = selectlist; return this; }, setResList:function(reslist){ this.reslist = reslist; return this; }, setContentOffset:function(dir,animated){ this._super(dir,animated); return this; }, moveToIndex:function(index,isanimation){ var self = this; var offset = 0; var dir = cc.p(0,0); if (this.direction == ccui.ScrollView.DIR_VERTICAL) { offset = (this.itemsize.height + this.itemspace)*index; if (offset < 0) {offset = 0;} else if (offset > this.innersize.height - this.height) {offset = this.innersize.height - this.height;} dir = cc.p(0,offset); } else { offset = -(this.itemsize.width + this.itemspace)*index; if (offset > 0) {offset = 0;} else if (offset < this.width - this.innersize.width) {offset = this.width - this.innersize.width;} dir = cc.p(offset,0); } var aa = self.getViewSize(); // self.setContentOffset(dir,isanimation); }, MoveToLastOne:function(){ var dir = this.getContentOffset(); var index = 0; if (this.direction == ccui.ScrollView.DIR_VERTICAL) { index = Math.floor(dir.y/(this.itemsize.height + this.itemspace)); this.moveToIndex(index,true); } else { index = Math.floor(Math.abs(dir.y/(this.itemsize.width + this.itemspace))); this.moveToIndex(index); } }, MoveToNextOne:function(){ var dir = this.getContentOffset(); var index = 0; if (this.direction == ccui.ScrollView.DIR_VERTICAL) { index = Math.floor(dir.y/(this.itemsize.height + this.itemspace)); this.moveToIndex(index++,true); } else { index = Math.floor(Math.abs(dir.y/(this.itemsize.width + this.itemspace))); this.moveToIndex(index++); } },
});
帖子: 1
参与者: 1