// 获取文件名称后缀 、不带后缀
function getFilePath(filePath){
var path = [];
var pos = filePath.lastIndexOf('.');
path['fileExt'] = filePath.substring(pos); //获取后缀
path['fileName'] = filePath.substring(0,pos);//获取文件名,不带后缀
return path;
}
//实现一系列图片的预加载
//参数sources:图片信息关联数组
//参数callback:回调函数——图片预加载完成后立即执行此函数。
function preloadImages(sources,callback){
var newimages=[],
loadedimages=0;
var sources = (typeof sources!="object")? [sources] : sources;
function imageloadpost(){
loadedimages++;
if (loadedimages == sources.length){
callback && callback(newimages);
}
}
for (var i=0; i<sources.length; i++){
newimages[i] = new Image();
newimages[i].onload=function(){
imageloadpost();
};
newimages[i].onerror=function(){
imageloadpost();
};
newimages[i].src = sources[i];
};
}
function LoadImages(opts){
this.isFirst = true;
this.currPage = 1;
this.pageNum = opts.pageNum;
this.imgData = {
currPage:null,
prevPage:null,
nextPage:null
};
}
LoadImages.prototype.init = function(){//初始化
this.loadData(1,0);
};
LoadImages.prototype.goTo = function(toType){
var _self = this;
if(toType == 1){//下一页
_self.imgData.prevPage = _self.imgData.currPage;
_self.imgData.currPage = _self.imgData.nextPage;
_self.currPage++;
_self.showImg(1);
}else if(toType == -1){//上一页
_self.imgData.nextPage = _self.imgData.currPage;
_self.imgData.currPage = _self.imgData.prevPage;
_self.currPage--;
_self.showImg(-1);
}
};
LoadImages.prototype.showImg = function(showType){//显示图片
var _self = this;
var data = _self.imgData.currPage;
if(_self.currPage == 1){
$(".picwarp span.pre").addClass('hide');
}else{
$(".picwarp span.pre").removeClass('hide');//隐藏上一页按钮
}
if(data.num <= _self.pageNum*_self.currPage){
$(".picwarp span.next").addClass('hide');
}else{
$(".picwarp span.next").removeClass('hide');//隐藏下一页按钮
if(showType == 1 && ((_self.currPage+1) <= Math.ceil(data.num/_self.pageNum))){
this.loadData(_self.currPage+1,1);
}else if(showType == -1 && _self.currPage-1 >= 1){
this.loadData(_self.currPage-1,-1);
}
}
var list = data.urls;
var curdd = null;
var currPath = null;
for(var i=0;i<35 && i<list.length && i<_self.pageNum;i++){//遍历图片并显示
currPath = getFilePath(list[i][0]);
curdd = $('.moreImg dd:eq('+i+')');
curdd.find('a').attr('href',list[i][0]);
curdd.find('img').attr('src',currPath['fileName']+'s'+currPath['fileExt']);
}
};
LoadImages.prototype.preLoadImg = function(list,callback){//预加载图片
var currPath = null;
var imgageArr = [];
for(var i=0;i<list.length;i++){
imgageArr.push(list[i][0]);
currPath = getFilePath(list[i][0]);
imgageArr.push(currPath['fileName']+'s'+currPath['fileExt']);
}
preloadImages(imgageArr,callback);
};
LoadImages.prototype.loadData = function(pageIdx,loadType){//加载图片
var _self = this;
$.ajax({
type : 'POST',
url : xxx.getPageImgList,
data : {
pageNum:_self.pageNum,
currentPage:pageIdx
},
dataType : 'json',
success : function(data){
if(loadType == 0){
_self.imgData.currPage = data;
_self.preLoadImg(data.urls,_self.showImg(1));
}else if(loadType == 1){
_self.imgData.nextPage = data;
_self.preLoadImg(data.urls);
}else if(loadType == -1){
_self.imgData.prevPage = data;
_self.preLoadImg(data.urls);
}
}
});
};
//创建实例
var loadImgPage = null;
loadImgPage = new LoadImages({pageNum:35});