二月 7, 2010 12 : 01 下午 此格有 18 个脚印
最近在做土豆相册的项目,增加了一个缩略图菜单,那就要对缩略图进行分页显示了。
如果相册有很多图片的话,不可能一次对所有的缩略图进行加载,这就要面临如下两个问题了:
- 翻到这一页,才开始对这页中的缩略图进行加载;
- 每翻到一页,先要对这页进行判断,如果是已经加载过的页,就不重复执行加载操作。
所以我做了四个数组:
loadedPage :用来存入已经加载的页码
_thumArr :里面存着所有缩略图的url
ldArr :存入每一页的图片加载器
picnumArr :存入每一页的图片序号
主要解决的几个问题:
要求出每个分页的图片数:
//这里求出每一个分页的最大图片数。如果图片总数小于设置的每页图片数,那k等于图片总数
//如果图片总数大于设置的每页图片数,只在最后一页k等于图片总数除每页图片数的余,其它页k等于每页图片数
var k:Number;
if(_thumArr.length>pageNum){
if(n == Math.ceil(_thumArr.length/pageNum)-1){
k = _thumArr.length%pageNum;
}else{
k= pageNum;
}
}else{
k =_thumArr.length;
}
要得出加载的这个分页中的各图片序号,才能知道这些图片的url:
//启动此页中的图片加载器,求出各图片的url地址进行加载
//图片序号:pageNum*n+i
//图片url:_thumArr[pageNum*n+i]
for(var i:uint=0; i<k; i++){
var ld:ImageLoader = new ImageLoader();
ld.load(_thumArr[pageNum*n+i],lcontex);
ld.addEventListener(Event.COMPLETE,loadedFun);
......
}
最后我loaderPage的详细方法,传入的参数为当前翻到的页码
。
private function loaderPage(n:Number):void{
//如果这个分页页码不在已完成加载的页码数组中
//就将对这页的所有图片内容进行加载,否则就不重复执行加载操作了。
if(loadedPage.indexOf(n) == -1){
//ldArr数组用来保存图片加载器,picnumArr用来保存图片序号
//每次到新的分页都需要清空这两个数组
ldArr = new Array();
picnumArr = new Array();
//这里求出每一个分页的最大图片数。如果图片总数小于设置的每页图片数,那k等于图片总数
//如果图片总数大于设置的每页图片数,只在最后一页k等于图片总数除每页图片数的余,其它页k等于每页图片数
var k:Number;
if(_thumArr.length>pageNum){
if(n == Math.ceil(_thumArr.length/pageNum)-1){
k = _thumArr.length%pageNum;
}else{
k= pageNum;
}
}else{
k =_thumArr.length;
}
//启动此页中的图片加载器,求出各图片的url地址进行加载
//图片序号:pageNum*n+i
//图片url:_thumArr[pageNum*n+i]
for(var i:uint=0; i<k; i++){
var ld:ImageLoader = new ImageLoader();
ld.load(_thumArr[pageNum*n+i],lcontex);
ld.addEventListener(Event.COMPLETE,loadedFun);
ldArr.push(ld);
picnumArr.push(pageNum*n+i);
}
//已经完成加载的页码,加入完成加载页码数组
loadedPage.push(n);
}
}







