
Код AS3:
import flash.display.*;
import flash.events.*;
var nPages:uint=10;
var btns:Array=[];
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
var paginator:Sprite=new Sprite();
addChild(paginator);
function getPagesStr(n:uint):String {
var res:String="";
if (nPages<=5) {
for(var i:uint=1;i<=nPages;i++)
res+=i+((i==nPages)?"":",");
return res;
}
var lastNumber:uint;
if (n<=3) {
res="1,2,3,4";
lastNumber=4;
} else {
if (n!=nPages) {
res="1,2,"+((n-1==3)?"":"...,")+(n-1)+","+n+","+(n+1);
lastNumber=n+1;
} else {
res="1,2,...,"+(n-1)+","+n;
lastNumber=n;
}
}
if (lastNumber<nPages) {
if (lastNumber!=nPages-1 && lastNumber!=nPages-2 && nPages-1>lastNumber)
res+=",...,"+(nPages-1)+","+nPages;
else if (lastNumber==nPages-1)
res+=","+nPages;
else if (lastNumber==nPages-2)
res+=","+(nPages-1)+","+nPages;
else
res+=","+(nPages-1)+","+nPages;
}
return res;
}
var curPage:uint=1;
update_btn.addEventListener(MouseEvent.CLICK,onClick);
function createPageBtns(str:String):void {
if (btns.length>0) {
for (var i:uint=0;i<btns.length;i++) {
btns[i].removeEventListener(MouseEvent.CLICK,onClick);
btns[i].parent.removeChild(btns[i]);
}
btns=[];
}
var pages:Array=str.split(",");
var btn:page_btn;
for (i=0;i<pages.length;i++){
btn=new page_btn();
btn.tf.text=pages[i];
if (pages[i]!="...") {
btn.page=parseInt(pages[i]);
btn.addEventListener(MouseEvent.CLICK,onClick);
if (btn.page==curPage)
btn.gotoAndStop(2);
else
btn.gotoAndStop(1);
btn.tf.mouseEnabled=false;
}
btn.x=paginator.width;
paginator.addChild(btn);
btns.push(btn);
}
paginator.x=stage.stageWidth*0.5-paginator.width*0.5;
paginator.y=stage.stageHeight*0.5-paginator.height*0.5;
}
//btn.addEventListener(MouseEvent.CLICK,onClick);
createPageBtns(getPagesStr(curPage));
function onClick(e:Event):void {
if (e.target==update_btn) {
nPages=parseInt(pages_tf.text);
if (curPage>nPages) curPage=nPages;
createPageBtns(getPagesStr(curPage));
} else {
curPage=e.target.page;
createPageBtns(getPagesStr(curPage));
}
//curPage++;
//trace(curPage,getPagesStr(curPage));
}