代码关键:
一、给list添加橡皮回弹事件Event.ElasticOver
_rankList.scrollBar.on(Event.ElasticOver,this,_onRankListScrollEnd);
二、监听函数
private function _onRankListScrollEnd(dirtag:String):void{
trace("--------------_onRankListScrollEnd:"+dirtag);
if(dirtag=="Up"){
//向上滑
}else if(dirtag=="Down"){
//向下滑
}
}
三、列表数据
private var allRankList:HashMap;
private var nowRankType:int;
//初始化排行榜数据
private function initRankData():void{
//HashMap可以直接用Object也可以
allRankList= new HashMap();
allRankList[RankType.ROLE_ZONGHE_RANK] = []; //战力
allRankList[RankType.LEVEL_RANK]= []; //等级
}
//增加排行榜数据
private function addData(rank:Array,rankType:int):Array{
nowRankType=rankType;
for(var i:int=0;i<rank.length;i++){
(allRankList[rankType] as Array).push(rank[i]);
}
return allRankList[rankType];
}
//服务器放回某一个page(分页)的排行榜数据
//rankType指的就是:RankType.ROLE_ZONGHE_RANK、RankType.LEVEL_RANK等
public function refreshRank(rank:Array,rankType:int):void{
//给排行榜列表赋数据;
this._rankList.array=addData(rank,rankType);
}
四、请求服务器
private static var PAGE_NUM:int=20; //每页20条数据
private static var PAGE_MAX:int=5; //最大5页,也就是最多展示5*20=100条数据
private function downPage():void{
var rank:Array=allRankList[nowRankType];
var page:int=Math.floor(rank.length/PAGE_NUM); //当前页-1
if(rank.length%PAGE_NUM==0&&page<PAGE_MAX){ //证明当前页不是最后一页
sendRankList(page);
}
}
private function sendRankList(page:int=0):void{
var protocol:CRequestRankList = new CRequestRankList();
protocol.page = page;
protocol.ranktype=nowRankType;
if(page==0){
allRankList[nowRankType] = [];
}
NetworkManager.instance.Send(protocol);
}
注意:这些只是部分关键代码,list的渲染等没有展示出来,关键是掌握其主要思想,也就是第一、二的代码
网友评论